首先,HTTP是建立在TCP协议基础上的,而WebSocket通常也是建立在TCP上,所以说为什么有些网页游戏抓不到包而有些又可以,这仅是因为你使用的抓包工具是针对了HTTP的通信协议。

我先从抽象的层面,举一个可能不太恰当的例子,只为了让不明白HTTP和WebSocket两者之间抓包有何区别的同学大概了解这两个协议的异同。客户端/服务端用C/S简称,我把数据抽象成水流,而HTTP是用水枪传递水流的(无状态),至于WEBSOCKET则是使用水管传递水流(实时)。

HTTP通讯方式:

客户端C把数据封装好了要交给服务端S,所以把水放到水枪里面,射过去给S
S用桶把水挡下来了,然后分析水的成分(数据内容),完成后再把新的水(返回的数据)射回去给C
这个过程中,任何人都可以随时在C和S之间用海绵吸一点水然后拿去分析(嗅探数据),或者是直接用桶把水都挡下来分析完后再装到水枪中,模仿C的动作射给S(也就是代理抓包)
WEBSOCKET方式:

客户端C和服务端S,双方之间先用一条水管连起来(用的是HTTP握手),然后水流都通过这个小水管来传输
水管里面一直有水在流动,所以要通讯只需要C或者是S把数据水流放到水管中,则会立刻传输到对方那边
这个过程中,要嗅探就比较麻烦了,需要先在水管中先打个洞,然后再把分析器放进去、或者是斩断这个水管在中间接个水表之类的设备去分析水质成分
好了,乱说一通完毕,说一下抓取WebSocket的两个工具,都是常见的程序,只是可能很多同学不清楚有这样的功能而已。

第一个:Chrome,也就是谷歌的浏览器

进入你要抓包的网页,然后按F12打开我们最爱的开发者工具
然后点Network,再从过滤器中找到WebSockets(上方或下方的状态栏)
选中过滤出来的WebSocket,在弹出来的右边栏中可以找到Frames,里面就是抓到的包
如果要看新通讯产生的数据包,则要先点其他的位置比如Headers再点Frames才可以刷新
第二个:Fiddler,抓包调试的利器,已经人手一个了吧

打开Fiddler,点开菜单栏的Rules,选择Customize Rules...
这时会打开CustomRules.js文件,在class Handlers中加入以下代码
static function OnWebSocketMessage(oMsg: WebSocketMessage) {
    // Log Message to the LOG tab
    FiddlerApplication.Log.LogString(oMsg.ToString());
}
保存后就可以在Fiddler右边栏的Log标签里,看到WebSocket的数据包
到了这里,还有一个情况要说明,就算是有工具可以抓到WebSocket中的包,看到的也不一定是明文。这个要看传输的水是什么,如果是普通水那谁都可以分析;但如果是水银,那这个分析水的设备很可能就显示乱码了。 所以也就有同学明明使用了可以抓WebSocket包的程序,却抓出来的是乱码。那是因为别人传输的是二进制数据流(比如AMF包),而不是JSON之类的对人类可读的明文。

参考资料:

Debug Inspect WebSocket traffic with Fiddler 【荐】

Logging WebSocket Frames using Chrome Developer Tools, Net-internals and Wireshark
原始链接: http://blog.jtwo.me/post/use-chrome-or-fiddler-sniffer-websocket

使用Chrome或Fiddler抓取WebSocket包的更多相关文章

  1. 利用Fiddler抓取websocket包

    一.利用fiddler抓取websockt包 打开Fiddler,点开菜单栏的Rules,选择Customize Rules... 这时会打开CustomRules.js文件,在class Handl ...

  2. Fiddler抓取数据包分析案例

    案例:利用Fiddler抓取苏宁易购网站数据包分析 抓包软件:Fiddler4 请求名字:www.suning.com 详细内容: 一.了解数据包区域的字段含义 图1数据包区域 #:顺序号,按照抓包的 ...

  3. iPhone 手机用 Fiddler 抓取数据包 问题

    近日公司服务升级,将所有的接口请求由HTTP升级为了HTTPS,升级后在手机中安装了Fiddler的证书,Android端抓取HTTPS请求一切正常,可是在ios端抓取HTTPS请求时一直提示“此服务 ...

  4. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(33)-Fiddler如何抓取WebSocket数据包

    1.简介 本来打算再写一篇这个系列的文章也要和小伙伴或者童鞋们说再见了,可是有人留言问WebSocket包和小程序的包不会抓,那就关于这两个知识点宏哥就再水两篇文章. 2.什么是Socket? 在计算 ...

  5. 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

    1 引言 在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,然后才能通过网络爬虫进行模拟.浏览器大多也自带有调试工具可以 ...

  6. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  7. [转]如何使用Fiddler抓取指定浏览器的数据包

    参考资料:https://www.cnblogs.com/lauren1003/p/6519630.html 使用fiddler抓取不到浏览器的包时常用的解决办法: 1.必须先打开Fiddler,再打 ...

  8. (二)Fiddler抓取Firefox、Chrome浏览器上的https协议

    Fiddler抓取Firefox.Chrome浏览器上的https协议 安装Fiddler后默认只抓取http协议,如果是https协议的话,浏览器就会提示"您的链接并不安全". ...

  9. 【Fiddler】使用fiddler抓取指定浏览器的包

    参考资料:http://blog.csdn.net/sufubo/article/details/49331705 使用fiddler抓取不到浏览器的包时常用的解决办法: 1.必须先打开Fiddler ...

随机推荐

  1. VS2010 生成Xml格式的注释文档

    项目, 属性, build, 勾选xml document file, 重新build, 即可生成xml注释文件, 然后还得找工具软件(看到anytao推荐SandCastle) 生成更易读的帮助文档 ...

  2. Gruntjs: grunt-contrib-jst

    预编译Underscore模板到JST文件(Underscore:JS工具库) generate JavaScript template functions Gruntfile的配置实例: modul ...

  3. WP8.1中C++的winodws运行时组件位移操作的差异

    最近学习WP8.1应用开发,想把C语言的SM3国密算法移植到手机app中.由于把C语言的代码转换成C#代码工作量较大,因此只能用winodws运行时组件来实现. SM3国密算法是一种HASH算法,具体 ...

  4. FineUI v3.3.1 发布了!

    关于FineUI基于 ExtJS 的专业 ASP.NET 控件库. FineUI的使命创建 No JavaScript,No CSS,No UpdatePanel,No ViewState,No We ...

  5. 移动端打印调试插件 - debug.js 介绍

    前文中我们学习过,用 Fiddler 作为代理可以在移动端打开本地的页面进行查看(如何用 fiddler 代理调试本地手机页面),但是对于 js 的调试却无能为力(需要借助其他调试手段,比如 UC浏览 ...

  6. HTML5之创新的视频拼图剖析式学习之二

    昨天我们剖析了一下翻阅体验的实现.今天要剖析另外一个很有意思的效果——视频拼图. 网站中第一部分第二页<月熊的标志>是月熊志中互动性较强的一页,页面上会随机分布9块视频碎片,用户可以通过鼠 ...

  7. [CF #236 (Div. 2) E] Strictly Positive Matrix(强联通分量)

    题目:http://codeforces.com/contest/402/problem/E 题意:给你一个矩阵a,判断是否存在k,使得a^k这个矩阵全部元素都大于0 分析:把矩阵当作01矩阵,超过1 ...

  8. XML-RPC远程方法调用

    一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列 ...

  9. 12-rm 命令总结

    rm remove files or directories 删除目录或文件 [语法]: rm [选项] [参数] [功能介绍] rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其 ...

  10. 1008win7与虚拟机中的linux共享文件的(详细)方法

    转自http://jingyan.baidu.com/article/ca00d56c74dde4e99eebcfd2.html 好东西一起分享 win7与虚拟机中的linux共享文件的(详细)方法 ...