一、Fiddler工作原理
Fiddler能记录所有客户端和服务器的http和https请求。允许你监视、设置断点、修改输入输出数据等。
Fiddler是以代理web服务器的形式工作的,代理地址默认是127.0.0.1,端口8888。当浏览器输入访问地址进行搜索,会发送一个请求,这个请求会先经过fiddler,然后再到服务器,同样,服务器返回数据也会先经过fiddler,然后再到浏览器,这样就完成了抓包过程。
二、抓取APP包
1)抓取http请求
步骤1:确认手机等移动端和电脑处于同一个局域网中,记录下当前电脑的ip地址;
步骤2: Fiddler设置,在Tools > Options >Connections,勾选Allow remote computers to connect选项,如下图所示:
步骤3:手机移动端设置代理,方法:以安卓系统为例,找到手机连接的WiFi,长按点击修改网络,勾选“显示高级选项”,代理设置为“手动”,输入服务器主机名和服务器端口,然后保存后操作手机就可以抓到包了。
2)抓取APP的https请求
想要抓取https请求必须要在手机上安装证书!
步骤1:打开Fiddler,在Tools >Options > HTTPS,勾选Decrypt HTTPS traffic选项,保存
步骤2:下载证书,手机上打开浏览器,输入 http://192.168.xx.xx:8888,点击下方蓝色字体可直接下载证书
下载完成之后,点击证书,进行安装,安装成功之后就可以正常抓https请求了。
三、浏览器抓取Https包
浏览器想要抓取Https包也需要安装证书,否则浏览网页会无法访问
打开Fiddler,在Tools >Options > HTTPS,如下图所示,点击信任证书,可直接自动导入证书到电脑中;
之后在浏览器中管理证书中可以看到导入的证书
3)浏览器访问网页,查看结果
四、遇到过的问题及解决方法:
问题1:配置好了之后还是抓取不到https请求解决方法:
1、删除电脑上的所有fiddler证书;
2、然后去官网搜索下载一个Fiddler CertMaker.exe文件,执行一下,就是下图这个
Add Ons for Telerik Fiddler Web Debugging Proxyhttps://www.telerik.com/fiddler/add-ons
3、点击下载,然后运行文件
4、浏览器重新导入证书即可正常抓包(参考以上第三点)
问题2:win7系统弹框提示 creation of the root certificate was not successful 解决方法
1.打开cmd 命令行 进入fiddler的安装目录 如:
cd C:\Users\yyz\AppData\Local\Programs\Fiddler
2、执行以下命令
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 22/11/2099
注意:命令最后的日期 22/11/2099 一定要大于当前日期,否则创建证书是过期的!
3、重新启动fiddler就好了。
五、数据拦截和篡改
1、拦截请求数据并篡改
1、开启断点,选择 Rules ->Automatic Breakpoints ->Before Requests
2、发送请求,拦截成功后双击左侧数据,如下图所示
3、修改请求参数后,点击“Run to Completion”按钮即把被篡改的数据发给服务端
2、拦截相应数据并篡改
方法同理
1、开启断点,选择 Rules ->Automatic Breakpoints ->After Responses
2、发送请求,拦截后修改返回的响应数据,例如状态码,msg等
3、点击“Run to Completion”按钮,即把被篡改的响应数据发给客户端
遇到的问题:
问题1:抓取的接口返回出现 "Response body is encoded. Click to decode. ",如下图所示:
解决方法:选择 Rules > Remove All Encodings, 勾选即可
问题2:通过菜单选项或快捷键进行设置时,会将所有的HTTP请求都设置断点,但有时我们只想针对某个服务器发出的请求设置断点,应该怎么操作呢?
解决方法:Fiddler是支持命令操作的,我们可以通过“bpu 服务器地址”命令来对特定的请求设置断点,通过 “bpafter 服务器地址”来修改特定的响应数据
如下图输入命令: bpu 192.168.x.x,然后回车
如下图所示即代表命令已执行成功,只有host为对应的地址的请求才会被拦截
如果要清除原来的断点,可以在命令行输入 bpu,就会清除所有的断点
六、导出jmeter脚本
1、选择 File -> Export Sessions -> Selected Sessions
2、选择导出jmeter .jmx格式文件
3、然后在jmeter中打开所导出的jmx文件即可,注意导出内容可能会出错,需要调试修改后才可用