一文搞定http抓包工具Fiddler
什么是fiddler
fiddler是一个强大好用的http抓包工具,它通过代理服务器的方式将http客户端(可以是浏览器,可以是安卓APP,或者苹果APP)的请求进行拦截处理,只要能够拦截到http请求,那么fiddler就可以做请求和响应报文打印、请求断点调试、等功能,更高级的用法可以通过自己编写脚本实现自动化测试平台能力,事实上fiddler功能上我们用的最多的其实还是它的抓包,通过抓包来分析和定位前后端对接和联调问题。
下载安装fiddler
1、直接从本人的阿里云盘下载免费的fiddler安装包(新手推荐方式):
https://www.aliyundrive.com/s/HKvdb2DBq42
2、从fiddler官网下载免费的fiddler安装包(大牛推荐方式):
fiddler官方地址:https://www.telerik.com/
从官网可以看出,fiddler已经发展为平台级解决方案,并且改名为:“Fiddler Everywhere”,同时也嗅到了商业味道,fiddler平台级解决方案属于商业化需要收费,““Fiddler Everywhere”相比旧版fiddler功能更加强大,但是这里我们不过多介绍它,好在的是fiddler老的版本目前仍然是免费的,现在就跟大家说说怎么在官网找到免费的老版本fiddler,并下载使用。
1、访问上方官网地址进入官网后,点击导航栏的All Products(所有产品)。
2、继续点击VIEW ALL PRODUCTS(查看所有产品):
3、进入后点击Free tools(免费工具)
4、点击Fiddler Classic:
5、接下来就自己下载fiddler的需求填下表单,然后点击Download For Windows(免费的fiddler只支持windows版本的),等待下载完成即可。
6、双击FiddlerSetup.exe,点击I Agree:
7、选择安装目录,继续点击Install:
8、安装完成,点击Close关闭对话框即可:
fiddler浏览器抓包
接下来带大家操作下如何使用fiddler抓取浏览器的http请求包。
1、双击安装目录下的fiddler.exe(也可以发送到桌面)。
2、勾选Capture Traffic,表示开启抓包,再次点击表示关闭抓包,fiddler默认启动的代理服务器地址是127.0.0.1:8888。
3、打开浏览器,随便访问某个网站即可抓包,例如我们访问CSDN网站:https://www.csdn.net/,可以看到抓包列表抓取所有访问CSDN的包:
4、可以通过点击X图标,点击Remove all清空列表:
fiddler抓包原理
当勾选Capture Traffic后,fiddler会修改浏览器代理状态为开启,如果你用的谷歌浏览器,可以进入浏览器的(设置->高级->系统->打开您计算机的代理设置)这个路径,或者直接访问:chrome://settings/system,然后分别点击两次Capture Traffic,每点击一次就进去该路径下观察开关会自动被打开和自动被关闭。打开后代理url设置的正是fiddler默认的代理地址:127.0.0.1:8888,这就是fiddler通过代理服务器实现抓包的核心原理。
fiddler导出抓包报文
右键某一行请求,点击Save(保存)-> Selected Session -> as Text即可将某个请求HTTP完整报文通过txt文件保存到电脑本地进行问题定位和分析。
fiddler查看抓包报文
点击右边区域的Inspectors,可以在工具里面查看请求报文信息:
fiddler抓取指定的请求
1、可以通过点击Rules,隐藏一些不重要的请求,例如图片请求,HTT握手连接请求,304读取浏览器本地缓存请求。
3、fiddler过滤只抓取指定ip的请求:
如上方式,还可以指定fiddler过滤隐藏指定ip的请求。
4、fiddler过滤符合某个正则表达式的请求:
fiddler断点调试功能
点击Rules -> Automatic Breakpoints -> Before Requests:
fiddler断点调试最重要的就是可以修改请求相关的报文参数,或请求头信息,具体修改方式如下:
fiddler安卓APP抓包
1、要求手机能够访问到fiddler所在的电脑的ip,一般做法就是让手机和电脑连接同一个网络。
2、点击fiddler的File -> Capture Traffic,开启fiddler的抓包代理功能。
3、点击Tools -> Options,点击HTTPS,勾选Capture HTTPS CONNESTs和Decrypt HTTPS traffic:
4、HTTPS里面左上角的点击Actions -> Reset All Certificates,然后一路点击确定即可,做这步作用是一般手机APP连接后端走的都是HTTPS加密协议,需要重置更新所有SLL证书,更新fiddler自带的证书。
5、点击Tools -> Options,点击Connections,勾选Allow remote computers to connect即可:
6、最重要的一步,打开手机设置 -> 找到手机使用的网络或WIFI,点击进去,找到HTTP代理,配置代理,选择手动,输入fiddler所在电脑的服务器IP(可以通过cmd命令行执行ipconfig查看电脑的IPV4地址),输入端口为fiddler默认端口8888,最后点击保存即可,注意,结束调试之后要记得改回去,也就是要关闭回去手机的代理功能。
fiddler代理转发到其它服务器
如果我们希望将fiddler接收到的某些ip或者域名下的所有请求转发到另外的一个ip或域名地址去,类似Nginx反向代理功能,怎么实现呢,其实很简单,只要在下面的命令行输入:
urlreplace 源地址 目标地址
例如,如果希望将所有百度域名的请求转发到本地内网某个服务器上,命令如下:
urlreplace www.baidu.com 10.68.60.201:8769
---------- 正文结束 ----------
长按扫码关注微信公众号
Java软件编程之家