Fiddler原理:代理,是客户端和服务端中间人
支持:http、https、ftp、websocket(全双工协议:客户端和服务端都可以发请求,而且双方可以同时发请求)
官网下载:https://www.telerik.com/fiddler
具体使用:
1、开启或者关闭抓包
2、字段说明
名称 | 含义 |
---|---|
# | 抓取HTTP Request的顺序,从1开始,以此递增 |
Result | HTTP状态码 |
Protocol | 请求使用的协议,如HTTP/HTTPS/FTP等 |
Host | 请求地址的主机名 |
URL | 请求资源的位置 |
Body | 该请求的大小 |
Caching | 请求的缓存过期时间或者缓存控制值 |
Content-Type | 请求响应的类型 |
Process | 发送此请求的进程:进程ID |
comments | 允许用户为此会话添加备注 |
Custom | 允许用户设置自定义值 |
图标 | 含义 |
---|---|
![]() | 请求已经发送服务器 |
![]() | 已从服务器下载响应结果 |
![]() | 请求从断点处暂停 |
![]() | 响应从断点处暂停 |
![]() | 请求使用HTTP的HEDA方法,即响应没有内容(Body) |
![]() | 请求使用 HTTP 的 POST 方法 |
![]() | 请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道 |
![]() | 响应是 HTML 格式 |
![]() | 响应是一张图片 |
![]() | 响应是脚本格式 |
![]() | 响应是 CSS 格式 |
![]() | 响应是 XML 格式 |
![]() | 响应是 JSON 格式 |
![]() | 响应是一个音频文件 |
![]() | 响应是一个视频文件 |
![]() | 响应是一个字体 |
![]() | 普通响应成功 |
![]() | 响应是一个 FLASH |
![]() | 响应是一个 SilverLight |
![]() | 响应是 HTTP/300、301、302、303 或 307 重定向 |
![]() | 响应是 HTTP/304(无变更):使用缓存文件 |
![]() | 响应需要客户端证书验证 |
![]() | 服务端错误 |
![]() | 会话被客户端、Fiddler 或者服务端终止 |
3、Statistics请求的性能数据分析
4、Inspectors查看数据内容
该功能主要是用于查看会话内容,上半部分是请求的内容,下半部分是响应的内容
5、AutoResponder允许拦截指定规则的请求
AutoResponder允许你拦截指定规则的求情,并返回本地资源或Fiddler资源,从而代替服务器响应。看下图5步,我将“baidu”这个关键字与我电脑“f:\Users\YukiO\Pictures\boy.jpeg”这张图片绑定了,点击“Save”保存后勾选“Enable rules”,再访问baidu,就会被劫持。
6、Composer 自定义请求发送服务器
Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求
Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)
7、Filters 请求过滤规则
Filters这个功能主要是为了你能更快更准确的找到自己需要的接口,不会被请求过程中的其他数据接口影响
最常见的两个过滤条件是:Zone和Host
Zone只显示某个内网或者互联网的内容:
Host指定显示某个域名下的会话:
8、Fiddler设置解密HTTPS的网络数据
Fiddler可以通过伪造CA证书来欺骗浏览器和服务器。大概原理就是在浏览器面前Fiddler伪装成一个HTTPS服务器,而在真正的HTTPS服务器面前Fiddler又装成浏览器,从而实现解密HTTPS数据包的目的。
解密HTTPS需要手动开启,依次点击:
(1)Tools—>Fiddler Options—>HTTPS;
(2)勾选Decrypt Https TrafficDecrypt
(3)点击OK
9、Fiddler内置命令与断点
FIddler断点功能就是将请求截获下来,但是不发送,这个时候你可以干很多事情,比如说,把包改了,再发送给服务器君。还有balabala一大堆的事情可以做,就不举例子了。
命令 | 对应请求项 | 介绍 | 示例 |
---|---|---|---|
? | All | 问号后边跟一个字符串,可以匹配出包含这个字符串的请求 | |
> | Body | 大于号后面跟一个数字,可以匹配出请求大小,大于这个数字请求 | >1000 |
< | Body | 小于号跟大于号相反,匹配出请求大小,小于这个数字的请求 | <100 |
= | Result | 等于号后面跟数字,可以匹配HTTP返回码 | =200 |
@ | Host | @后面跟Host,可以匹配域名 | @www.bai.com |
select | content-type | select后面跟响应类型,可以匹配到相关的类型 | select.image |
cls | All | 清空当前所有请求 | cls |
dump | All | 将所有请求打包成saz压缩包,保存到“我的文档\Fiddler2\Captures”目录下 | dump |
start | All | 开始监听请求 |
start |
断点命令
bpafter | All | bpafter后边跟一个字符串,表示中断所有包含该字符串的请求 | bpafter baidu(输入bpafter解除断点) |
---|---|---|---|
bpu | All | 跟bpafter差不多,只不过这个是收到请求了,中断响应 | bpu baidu(输入bpu解除断点) |
bps | Result | 后面跟状态吗,表示中断所有是这个状态码的请求 | bps 200(输入bps解除断点) |
bpv/bpm | HTTP方法 | 只中断HTTP方法的命令,HTTP方法如POST、GET | bpv get(输入bpv解除断点) |
g/go | All | 放行所有中断下来的请求 | g |
bpafter命令示例:
断点命令:
断点可以直接点击Fiddler下图的图标位置,就可以设置全部请求的断点,断点的命令可以精确设置需要截获那些请求。如下示例:
Fiddler打断点修改接口请求数据:
第一步:设置Fiddler在请求发送之前拦截接口的请求数据
第二步:在浏览器中提交表单(第一步配置了的话,这里的表单数据不会立即提交,接口请求会被Fiddler拦截)
第三步:在Fiddler中修改请求的接口数据
第四步:在数据库中或者系统中查看提交的数据是否是修改过后的数据
第一步:设置Fiddler在请求发送之前拦截接口的请求数据
菜单栏:Riles—>Automatic Breakpoints—>Before Requests
第二步:在浏览器中提交表单(第一步配置了的话,这里的表单数据不会立即提交,接口请求会被Fiddler拦截)
第三步:查看拦截的请求并在Fiddler中修改请求的接口数据
拦截到的接口请求如下图:
修改接口数据并提交请求
提交完成之后,在响应头 Response Headers 中可以响应信息,200表示提交成功!
第四步:在数据库中或者系统中查看提交的数据是否是修改过后的数据
Fiddler修改响应数据:
第一步:打抓取响应数据断点
第二步:在Fiddler中找到核心会话(接口)
第三步:点击【Textview】修改需要的返回结果。
第四步:修改完成后,第二步中选项卡【Transformer】的编码格式要重新设置回去,重新压缩在发送。点击【Run to Completion】。
第五步:验证页面是否按照修改预期展示。
第一步:打抓取响应数据断点
Rules -> Automatic BreakPoints -> After Response
浏览器中访问商城首页
第二步:在Fiddler中找到核心会话(接口)
核心URL:http://m.ge960.com/home/module.htm?pageId=187
只有核心URL不跳过,其它的URL都直接跳过就可以。
图中#下面的图标,表示现在的请求的响应数据被拦截了,这个直接放行。
点击这个会话,查看右侧 response 的选项卡【Transformer】,记住当前选中的编码格式,默认【chunked Transfer-Encoding】是选中的,去掉勾之后下方【HTTP Compression】选中在【None】上,意思是不压缩,如果不点你的代码没办法修改是乱码的。修改完之后记得是要点回来的,重新压缩在发送。
第三步:点击【Textview】修改需要的返回结果。
第四步:修改完成后,第二步中选项卡【Transformer】的编码格式要重新设置回去,重新压缩在发送。点击【Run to Completion】。
第五步:验证页面是否按照修改预期展示。
Fiddler连接手机
1、首先要把fiddler设置一下
2、电脑Win+R 打开命令窗口,输入ipconfig 获取到电脑IP地址,主要有时候电脑安装了虚拟机,会有多个地址需要判断一下
3、手机设置代理 打开设置——WLAN——选择代理——输入IP和端口号,fiddler-connection设置的端口号
4、下载fiddler证书(抓取https接口),打开网页输入http://ip:端口号下载证书,或者电脑端导出证书发送到手机里面