Fiddler是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求, Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。
下面主要从以下三个方面进行简单介绍:
- Fiddler安装及配置
Fiddler下载->PC端安装->PC端配置->手机端安装及配置→验证是否成功 - 如何使用Fiddler进行抓包分析
Fiddler抓包分析基本功能介绍:Header、Statistic、Inspectors 、AutoResponder 、Composer选项卡,拦截一个Post请求,如何修改请求参数及模拟服务端返回各种状态码和返回数据。 - Fiddler遇到的常见问题
Fiddler安装及配置
PC端安装及配置
需要1台PC做辅助,且PC需要与手机在同一局域网内或有独立公网IP
一、安装Fiddler
下载完成后,可以自定义安装
下载地址:http://www.telerik.com/fiddler
二、安装Fiddler证书生成器
下载地址:
http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2
打开Fiddler,点击工具栏中的Tools->Fiddler Options,切换到HTTPS选项卡,选中Capture HTTPS CONNECTs ,Decrypt HTTPS traffic和Ignore server certificate errors,如下图。会弹出安装证书的提示,一路点是或确定安装即可。
1.重启fiddler,仍停留在 HTTPS 选项卡,点击右侧Actions,出现下拉菜单,点击 Export Root Certificate to Desktop,此时证书会生成到桌面上,名为 FiddlerRoot.cer,点OK保存。
2.配置Fiddler允许远程连接
如上图的菜单中点击Connections选项卡,选中Allow remote computers to connect,默认监听端口为8888,若被占用也可以设置,配置好后需要重启Fiddler。
手机端安装及配置
以Android设备为例,Ios设备除了导入证书方式不同,其他操作同Android设备。
1、获取PC端IP
PC端命令行ipconfig查看Fiddler所在机器IP,本机IP为10.x.x.xxx,如下图.
2、手机端安装并导入证书
-
下载证书
手机端浏览器访问http://10.9.0.177:8888,即Fiddler所在机器IP加上端口,代理上网。如下图。
点击FiddlerRoot certificate下载证书
如果未设置锁屏密码,可能会提示“您需要先设置锁屏密码才能使用凭据存储”,点击确定进行设置。
-
导入证书(部分Android机型不需要这一步)
设置——>安全——>从存储设备安装——>从Fiddler的下载路径找到证书,点击安装即可.
1.手机端设置代理
之后打开手机连接到同一局域网的wifi,并修改该wifi网络详情→显示高级选项,选择手动代理设置,主机名填写Fiddler所在机器ip,端口填写Fiddler端口,默认8888,如下图。
验证Fiddler是否抓包成功
这时,手机上的网络访问在Fiddler就可以查看了,如下图XXXXApp的网络请求。
停止网络监控的话去掉wifi的代理设置即可,否则Fiddler退出后手机就上不网了哦。
如果需要恢复手机无密码状态,Android端之后可以通过系统设置-安全-受信任的凭据-用户,点击证书进行删除或清除凭据删除所有用户证书,再设置密码为无。
注意:Ios Fiddler抓包证书信任设置
https://support.apple.com/en-nz/HT204477
iOS10.3系统开始,需要点击“通用”-“关于本机”-“证书信任设置”,选中“针对根证书启用完全信任”,才能抓到Node/RN页面请求
Fiddler抓包分析
Fiddler基本界面
一、统计信息Statistic
关于HTTP请求的性能和其他数据分析
一些基本性能数据:如DNS解析的时间消耗是8ms,建立TCP/IP连接的时间消耗是8ms等等信息。
二、查看器Inspectors
选中某一行网络请求,右侧会显示具体请求内容(Request Header)和返回内容(Response Header and Content)
分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。
Inspectors tab下可以多种方式查看Request消息
Inspectors tab下可以多种方式查看Response消息
抓包分析举例
1.请求数据经过客户端压缩的Post请求
Post接口: https://xxx.xxxx.com/xxxxx/xxxx/xxx/upload(上传通讯录接口),如下图所示。
客户端向服务端传输的数据是经过处理的,需要服务端nginx配lua来解gzip包。
如果服务端未配置解压缩或者配置有问题,数据会显示乱码,如下图所示。
注意:Fiddler中Decode选项是处于未选中状态,即Fiddler没有自动进行解压。
2.带有cookie的Get请求
接口:https://xxxxx.cn/xxxxx/xxxx/card?u=xxxxx&share_channel=xxxxxx
三、重定向AutoResponder(可以修改FiddlerScript)
Fiddler 的AutoResponder tab允许你从本地返回文件,而不用将http request 发送到服务器上。
拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。
Fiddler支持的拦截重定向的方式:
mock接口返回的数据
Find a file:导入文件,修改服务端返回的数据
-
右键单击某请求->save->Response->Response Body,将服务端返回的数据保存到本地,可以修改服务端返回的数据。
-
把对应的web session面板中的url请求拖到右边(或者直接点击Add rules进行编辑URL),若是EXACT全字匹配(下图是正则匹配),则直接导入上一步保存的文件。保存后,重新请求,就会刷新使用最新代码。![在这里插入图片描述](https://img-blog.csdnimg.cn/20190509130858554.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmdoYWlsb3ZlXzIwMDg=,size_16,color_FFFFFF,t_70)
状态码
有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
常见状态码
正则匹配
不仅是单个url,Fiddler支持多种url匹配的方式:
-
字符匹配
如 example可以匹配 http://www.example.com和http?/example.com.cn
-
完全匹配
前缀为“EXACT:”表示完全匹配(大小写敏感)
-
正则表达式匹配
前缀为“REGEX:”表示使用正则表达式匹配:
.+ 匹配一个或多个字符,如regex:.+jpg 包含有jpg字符串且以jpg字符串结尾的,即可匹配
.* 匹配0个或多个字符,如regex:.+.jpg.*包含有.jpg字符串即可匹配
^ 匹配字符串开始位置
$ 匹配字符串结束位置
如regex:.+.(jpg|gif|bmp)$包含以jpg或gif或bmp字符串结尾的,即可匹配
5)前缀为“REGEX:(?insx)”表示匹配方式其中:
i表示不区分大小写;
n表示指定的唯一有效的捕获是显式命名或编号的形式;
s表示单行模式;
x表示空格说明的;
如:regex:(?insx).*.(css|js|php)$ 表示匹配所有以css,js,php结尾的请求url
regex:(?inx)./feed/v3/nd1feed?.$
低速模拟
Fiddler可以通过延迟发送数据或者接收数据的时间,来限制网络的下载速度和上传速度,从而模拟限速环境。延迟时间(毫秒)=1000/下载速度。例如,我们要模拟50kb/s的网络速度,需要延迟的时间为200毫秒。
Fiddler Rules选项卡下,勾选Rules-> Performance-> Simulate Modern Speeds
四、请求发射器Composer
两种编辑模式构建请求: Parsed模式(最常用)和Raw模式。
Parsed
把Request分为三个部分:Request line,Request Headers,Request Body。很容易创建一个Request。
输入请求的url之后executed即可,也可以修改相应的头信息(如添加常用的accept, host, referrer, cookie,cache-control等头部)后execute.
Raw
使用HTTP头部信息构建http请求。与上类似。
需要你一行一行手动写一个Request。
举例:POST请求https://xxxx.xxx.com/xxxxxx/xxxx/xx/login?XXX。如下图所示。
五、过滤器Filter
过滤规则,如下图所示。
-
host和zone过滤。可以过滤只显示intranet或则internet的HTTP请求
也可以选择特定域名的HTTP请求
-
client process:可以捕获指定进程的请求。
这对于调试单个应用的请求很有帮助。
Fiddler常见问题
查看Post参数中文乱码
解决方法:
1.win+R
2.打开注册表编辑器:输入regedit +回车+是
3.HKEY_CURRENT_USER\Software\Microsoft\Fiddler2
4.右键新建,选字符串值,加上HeaderEncoding,然后值输入 GBK(建议设置为UTF-8)
注意: HeaderEncoding建议设置为UTF-8,因为一般文件的字符编码格式习惯上采用UTF-8格式,而如果此处为GBK,当文件(如此例中.html为UTF-8格式的字符编码)格式不是GBK时,容易在下图的红框处出现乱码。故而,建议将其设置为UTF-8格式。
Response乱码
如果Response中的HTML是乱码, 这是因为HTML被压缩了, 我们可以通过两种方法去解压缩。
-
点击Response Raw上方的"Response is encoded any may need to be decoded before inspection. click here to transform"
-
选中工具栏中的"Decode"。这样会自动解压缩.