什么是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(所有产品)。

android热点 抓包 安卓抓包工具http_java

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

android热点 抓包 安卓抓包工具http_linux_02

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

android热点 抓包 安卓抓包工具http_python_03

4、点击Fiddler Classic:

android热点 抓包 安卓抓包工具http_java_04

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

android热点 抓包 安卓抓包工具http_linux_05

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

android热点 抓包 安卓抓包工具http_nginx_06

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

android热点 抓包 安卓抓包工具http_linux_07

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

android热点 抓包 安卓抓包工具http_python_08

fiddler浏览器抓包

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

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

android热点 抓包 安卓抓包工具http_linux_09

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

android热点 抓包 安卓抓包工具http_python_10

3、打开浏览器,随便访问某个网站即可抓包,可以看到抓包列表抓取所有访问CSDN的包:

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

android热点 抓包 安卓抓包工具http_android热点 抓包_11

fiddler抓包原理

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

android热点 抓包 安卓抓包工具http_java_12

fiddler导出抓包报文

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

android热点 抓包 安卓抓包工具http_android热点 抓包_13

fiddler查看抓包报文

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

android热点 抓包 安卓抓包工具http_linux_14

fiddler抓取指定的请求

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

android热点 抓包 安卓抓包工具http_nginx_15

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

android热点 抓包 安卓抓包工具http_python_16

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

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

android热点 抓包 安卓抓包工具http_python_17

fiddler断点调试功能

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

android热点 抓包 安卓抓包工具http_nginx_18

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

android热点 抓包 安卓抓包工具http_python_19

fiddler安卓APP抓包

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

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

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

android热点 抓包 安卓抓包工具http_nginx_20

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

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

android热点 抓包 安卓抓包工具http_python_21

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

android热点 抓包 安卓抓包工具http_linux_22

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