0.前言
在火狐浏览器和谷歌浏览器中可以非常方便的调试network(抓取HTTP数据包),但是在360系列浏览器(兼容模式或IE标准模式)中抓取HTTP数据包就不那么那么方便了。虽然也可使用HttpAnalyzer等工,但是毕竟都是收费软件。只需通过合适的过滤和操作,Wireshark也可抓取HTTP请求和响应。下面便说明具体操作。
假设在8080端口运行一个HTTP服务器,本例中使用Python Flask运行一个HTTP服务并侦听8080端口,实现一个简单的加法运算,网页中通过ajax提交两个数据,例如a=2&b=3,Flask处理之后返回一个json数据包,格式如{"result":5}。
1.设置过滤条件
【1】http and ip.addr == 192.168.1.106 and tcp.port == 8080
【a】http:指定网络协议
【b】ip.addr == 192.168.1.106:指定服务器ip地址,请根据实际情况替换。
【c】tcp.port == 8080,指定端口号,请根据实际情况替换。
图1 过滤条件
【2】点击apply
点击apply之后可过滤得到两个数据包,分别是HTTP请求和HTTP响应。
图2 HTTP请求和响应
2.查看TCP数据流——Follow TCP Stream
【1】在任意数据包上右击,选择Follow TCP Stream
该步骤可以过滤出和该HTTP数据包有关的TCP数据包,包括TCP 3次握手,TCP分片和组装等。
图3 选择Follow TCP Stream
【2】最终得到HTTP请求和响应
【a】红色背景字体为HTTP请求,蓝色背景字体为HTTP响应
【b】从User-Agent中可以看出,360浏览器兼容模式使用了IE8内核(该台计算机操作系统为XP,IE浏览器版本为8),这说明360浏览器使用了系统中的IE核。
图4 HTTP请求和响应具体内容
3.总结
相对于火狐或谷歌浏览器中使用调试工具抓取HTTP数据包,使用wireshark要显得复杂些,但是也可以达到最终效果。这些操作分为两步,第一步设置合理的过滤条件,第二步在任意数据包中选择Follow TCP Stream。