如今Python爬虫越来越火,有想学好Python爬虫的小伙伴可以前往gzh【Python编程学习圈】领取系统的学习资料以及教程视频,还分享有大量的技术干货文章可以阅读学习,欢迎大家关注学习。
传统的抓包工具,如:Fiddler、Charles、Wireshark、Tcpdump,大家肯定都不陌生了;
今天我们就来聊一聊这款常用的抓包工具:Fiddler;
Fiddler是个蛮好用的抓包工具,也是比较好用的web代理调试工具之一;
它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据;
修改hosts、限制网速、http请求性能统计、简单并发、接口测试、辅助自动化测试等等,也可以用来检测网络安全。
① Firebug
虽然它可以抓包,但对于分析http请求的详细信息不够强大,模拟http请求的功能也不够。
且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存;
② Wireshark:
通用的抓包工具,能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。
但如果是TCP、UDP协议可以用wireshark;
③ Httpwatch
也是比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件);
而Fiddler 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。
爬虫与Fiddler:
在一些稍复杂的网络请求中,我们直接看网址的变化是看不出规律的,如果要自动爬取,就必须通过程序构造这些请求,并分析这些请求的规律。
进行登录时,很多网页的真实登录处理并不是我们看到的网址,这些网址一般需要通过工具进行分析得出。
分析过程中,抓包软件的配合会变得更加方便。
Fiddler是以代理WEB服务器的形式工作的,它默认使用代理地址**:127.0.0.1**, 端口**:8888**。
当Fiddler开启时会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。
不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。
解决的办法是重新启动下Fiddler;
Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。
开启后再左下角会有显示,当然也可以直接点击界面底栏左下角的图标来关闭/开启抓包功能。
左边面板
左边web session面板的字段及图标含义;
右边面板
右边是详情和数据统计面板;
1)Statistics
关于HTTP请求的性能(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)以及数据分析。
2)Inspectors
是用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容;
提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息。
3)AutoResponder
可用于拦截某一请求,即按自己添加的指定规则重定向到本地的资源或Fiddler资源,从而代替服务器响应。
4)Composer
自定义请求发送服务器,Parsed模式下你只需要提供简单的URLS地址即可;
5)Filters
即过滤规则,通过设置过滤规则来过滤所需的http请求,勾选Use Filters开启过滤器。
内外网过滤:
对host过滤:
输入多个HOST,多个之前用半角逗号或者回车分隔;
支持通配符:*,baidu.com;
这里有两个最常用的过滤条件:Zone和Host;
6)timeline
请求响应时间,在左侧会话窗口点击一个或多个请求,Timeline 便会显示指定内容从服务端传输到客户端的时间:
fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书。
谷歌、IE浏览器
谷歌浏览器和IE浏览器启动的时候,就会默认读取系统代理,所以只需要将Fiddler设置为启动后作为系统代理即可。
设置启动即作为系统代理——点击Tools->Options->Connections;
这样设置后,我们在谷歌浏览器和IE浏览器访问HTTP请求,就会在Fiddler工具左侧中显示出请求,但是HTTPS的请求却没有显示出来?
原因Fiddler作为一个代理服务器,是可以代理到HTTPS请求的。
但是HTTPS可以理解为HTTPS=HTTP+SSL/TLS,也就是HTTPS是加密的,是有证书存在的,所以我们需要配置解密HTTPS并安装证书。
配置解密HTTPS并安装证书——点击Tools->Options->HTTPS。
查看证书是否安装成功
浏览器中访问HTTPS的页面,也能在Fiddler中显示;
通信过程中,在传递信息的中间进行修改后再传递,那么就可以使用Fiddler的断点功能。
(1)使用Fiddler的断点,可以实现的功能:
断点可以打到两个地方:
断点请求/响应
如图,箭头所指的位置时可以点击的,共三种状态:
还有一种打断点的方式:在命令行中输入命令;
这种方法只会中断www.baidu.com;
断点请求并修改
操作步骤:
图中Break On Response表示把请求发给服务器,但是服务器的响应被fiddler拦截,此时可以修改响应内容(和断点响应类似)。
-> 断点响应并修改
-> Fiddler中拦截请求:
-> Fiddler中拦截响应:
断点命令
断点的命令则可以精确设置需要截获那些请求,如下表所示:
注意:
如bpafter断点命令使用方法为:bpafter 后边跟字符串->表示中断所有包含该字符串的请求;bpafter ->表示解除刚刚的中断断点;
命令设置断点
响应断点
bqafter 百度一下,你就知道 对www.baidu.com进行响应断点
bqafter 取消响应断点
请求断点
bp 百度一下,你就知道 对www.baidu.com进行请求断点
bp 取消请求断点
以Android手机上配置Fiddler工具为主,讲解配置手机抓包过程。
配置Android手机
Fiddler配置中Connections中设置允许远程连接和端口号。
手机端设置:手机端与Fiddler工具所在电脑处于同一个网络中。
查看电脑的IP 地址,手机网络代理指定为电脑IP地址;
打开设置 > WLAN > 连接上的 WLAN 设置,点击代理 > 手动,设置主机名为 Fiddler 所在主机的 IP,端口为 Fiddler 监听端口。
安装Fiddler证书;用浏览器打开证书地址,点击页面底部 FiddlerRoot certificate下载证书,打开设置 > 安全>更多安全设置 > 加密和凭据 > 从存储设备安装,选择下载好的 FiddlerRoot.cer 进行安装。
浏览器打开目标地址,已经可以抓取 HTTPS 包了;
注意:测试完毕,记得关闭代理,否则手机无法上网!
最后再多说一句:Fiddler请谨慎使用!