一文搞定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(所有产品)。

977660e8cb6175576908e63c7bbdc630.png

2、继续点击VIEW ALL PRODUCTS(查看所有产品):

c27cff71c966d03b0e94a9d85a464260.png

3、进入后点击Free tools(免费工具)

eb1cd74433692984e0e6fd0520c9834d.png

4、点击Fiddler Classic:

e3eb5fef997a4442f2e7234c0e829903.png

5、接下来就自己下载fiddler的需求填下表单,然后点击Download For Windows(免费的fiddler只支持windows版本的),等待下载完成即可。

8a1ca8672f9bc11b10a639cf91ed6b45.png

6、双击FiddlerSetup.exe,点击I Agree:

e5dde308fabf2f0d900059fa8a8ee71b.png

7、选择安装目录,继续点击Install:

ea4f20db1860386e38fc17a6ea947941.png

8、安装完成,点击Close关闭对话框即可:

3118db751592fa36138c693376379a51.png

fiddler浏览器抓包

接下来带大家操作下如何使用fiddler抓取浏览器的http请求包。

1、双击安装目录下的fiddler.exe(也可以发送到桌面)。

a5d185f5c9a1d75a1c09921cb5f1610f.png

2、勾选Capture Traffic,表示开启抓包,再次点击表示关闭抓包,fiddler默认启动的代理服务器地址是127.0.0.1:8888。

c0a1b3909c9bb23b0593b7cff00bdc51.png

3、打开浏览器,随便访问某个网站即可抓包,例如我们访问CSDN网站:https://www.csdn.net/,可以看到抓包列表抓取所有访问CSDN的包:

 1a62dafe2a603747d95a3f77906b1021.png

4、可以通过点击X图标,点击Remove all清空列表:

8cd3585a2d6bcddd2bdd07a6b295e9f4.png

fiddler抓包原理

当勾选Capture Traffic后,fiddler会修改浏览器代理状态为开启,如果你用的谷歌浏览器,可以进入浏览器的(设置->高级->系统->打开您计算机的代理设置)这个路径,或者直接访问:chrome://settings/system,然后分别点击两次Capture Traffic,每点击一次就进去该路径下观察开关会自动被打开和自动被关闭。打开后代理url设置的正是fiddler默认的代理地址:127.0.0.1:8888,这就是fiddler通过代理服务器实现抓包的核心原理。

671cec84632451396cf5af330a27f78e.png

fiddler导出抓包报文

右键某一行请求,点击Save(保存)-> Selected Session -> as Text即可将某个请求HTTP完整报文通过txt文件保存到电脑本地进行问题定位和分析。

6bc33d124e66ea68167fee273cf7187f.png

fiddler查看抓包报文

点击右边区域的Inspectors,可以在工具里面查看请求报文信息:

eb16b147aae157fa04e1c9d2a67068b5.png

fiddler抓取指定的请求

1、可以通过点击Rules,隐藏一些不重要的请求,例如图片请求,HTT握手连接请求,304读取浏览器本地缓存请求。

652ed366d540a5aad091927d67141774.png

3、fiddler过滤只抓取指定ip的请求:

f44164ecab1a81ce3ea4cb83ff3f658e.png

如上方式,还可以指定fiddler过滤隐藏指定ip的请求。

4、fiddler过滤符合某个正则表达式的请求:

0eae658836253cb91e630a9b9ffdad89.png

fiddler断点调试功能

点击Rules -> Automatic Breakpoints -> Before Requests:

d28a23ef4b51557b86fa49ce8a927e20.png

fiddler断点调试最重要的就是可以修改请求相关的报文参数,或请求头信息,具体修改方式如下:

fdb6c4e9be2d97ebf9a6d9f1b4269d2f.png

fiddler安卓APP抓包

1、要求手机能够访问到fiddler所在的电脑的ip,一般做法就是让手机和电脑连接同一个网络。

2、点击fiddler的File -> Capture Traffic,开启fiddler的抓包代理功能。

3、点击Tools -> Options,点击HTTPS,勾选Capture HTTPS CONNESTs和Decrypt HTTPS traffic:

7b069f2b296e215f68594acf31c6e340.png

4、HTTPS里面左上角的点击Actions -> Reset All Certificates,然后一路点击确定即可,做这步作用是一般手机APP连接后端走的都是HTTPS加密协议,需要重置更新所有SLL证书,更新fiddler自带的证书。

5、点击Tools -> Options,点击Connections,勾选Allow remote computers to connect即可:

1ded4b1ed6570a71339fc9c8cb84f74e.png

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

9ffc30c01b78055c4822cc63b20f9f22.png

---------- 正文结束 ----------

长按扫码关注微信公众号

e3ee2e865007f96ca1b343a24ec6fca6.png

Java软件编程之家