当前位置 博文首页 > Stefan的博客:Fiddler 抓包工具使用详解
Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。
Fiddler:译名—小提琴手,由Eric开发,曾就职微软。
Fiddle支持多个平台的版本:
由于fiddler是基于.net开发的,所以在windows平台下支持的功能更多, 在IOS\Linux的支持会相对少。
fiddler 由于官网在国外,下载时间很长还需要翻墙,目前国内有引进,可以在电脑管家中下载安装。
win8 系统之前用 “Fiddler for.NET2”
win8 系统之后用 “Fiddler for.NET4”
Mac/Linux Fiddler 下载地址:
Windows Fiddler 下载地址
类似工具
功能:
1、能够监听 http/ https 的流量,可以截获从浏览器或者客户端软件向服务器发送的 http/ https 请求;
2、对截获之后的请求,我们还能够查看请求中的内容;
3、伪造请求。不仅可以伪造客户端的请求,还能够伪造服务器的响应(方便我们进行前后端的调式);
4、测试网站的性能;
5、解密https的外部会话。因为https本身是一种加密的协议,通过fiddle我们可以进行解密操作;
6、提供第三方扩展插件,满足更多需求。
代理模式:
流模式与缓冲模式
流模式:fiddler会实时把服务器返回给客户端的数据进行返回。
缓冲模式:fiddler会等待所有的请求都准备好之后才返回给客户端。
区别:
缓冲模式下可以控制最后的服务器响应;
流模式下不能控制,是什么就是什么,更接近浏览器本身的真实行为。
使用场景
1、开发环境的host配置;
2、前后端接口连调——Composer;
3、定位线上bug——将发布文件代理到本地,快速定位线上bug;
4、性能分析和优化——Inspectors 、Timeline。
界面及使用
Fiddler想要抓到数据包,要确保Capture Traffic是开启
在File –> Capture Traffic
开启后再左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。
工具栏详细介绍
名称 | 含义 |
---|---|
# | 抓取HTTP Request的顺序,从1开始,以此递增 |
Result | HTTP状态码 |
Protocol | 请求使用的协议,如HTTP/HTTPS/FTP等 |
Host | 请求地址的主机名 |
URL | 请求资源的位置 |
Body | 该请求的大小 |
Caching | 请求的缓存过期时间或者缓存控制值 |
Content-Type | 请求响应的类型 |
Process | 发送此请求的进程:进程ID |
Comments | 允许用户为此回话添加备注 |
Custom | 允许用户设置自定义值 |
图标 | 含义 |
---|---|
请求已经发往服务器 | |
已从服务器下载响应结果 | |
请求从断点处暂停 | |
响应从断点处暂停 | |
请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body) | |
请求使用 HTTP 的 POST 方法 | |
请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道 | |
响应是 HTML 格式 | |
响应是一张图片 | |
响应是脚本格式 | |
响应是 CSS 格式 | |
响应是 XML 格式 | |
响应是 JSON 格式 | |
响应是一个音频文件 | |
响应是一个视频文件 | |
响应是一个 SilverLight | |
响应是一个 FLASH | |
响应是一个字体 | |
普通响应成功 | |
响应是 HTTP/300、301、302、303 或 307 重定向 | |
响应是 HTTP/304(无变更):使用缓存文件 | |
响应需要客户端证书验证 | |
服务端错误 | |
会话被客户端、Fiddler 或者服务端终止 |
Statistics 请求的性能数据分析
随意点击一个请求,就可以看到Statistics关于HTTP请求的性能以及数据分析了
Inspectors 查看数据内容
Inspectors是用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容:
AutoResponder 允许拦截指定规则的请求
AutoResponder允许你拦截指定规则的求情,并返回本地资源或Fiddler资源,从而代替服务器响应。
Composer 自定义请求发送服务器
前后端接口连调Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求
Post请求:参数写在Request Body里面。
我们还能够伪造Request Header中的Cookie。
Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)
Filters 请求过滤规则
网络限速FiddlerScript——测试在不同网络下的请求运行状况
Fiters 是过滤请求用的,左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。这个时候通过过滤规则来过滤掉那些不想看到的请求。
勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host
1、Zone 指定只显示内网(Intranet)或互联网(Internet)的内容:
2、Host 指定显示某个域名下的会话:
OnBeforeRequest()表示在发送一个请求时需要做什么。
添加代码:
oSession[“resquest-trickle-delay”]=”3000”;//表示延时3秒请求;
oSession[“response-trickle-delay”]=”3000”;//表示延时3秒响应;
Timeline 请求响应时间
在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间:
Fiddler可以通过伪造CA证书来欺骗浏览器和服务器。Fiddler大概原理就是在浏览器面前Fiddler伪装成一个HTTPS服务器,而在真正的HTTPS服务器面前Fiddler又装成浏览器,从而实现解密HTTPS数据包的目的。
1、解密HTTPS需要手动开启,依次点击:
Tools –> Fiddler Options –> HTTPS
2. 勾选Decrypt HTTPS Traffic
3. 点击OK
常用功能
HOST配置 -将线上的服务器IP配置为指向本地服务器IP。将线上所有的文件的地址都映射到本地。
1、文件替换\线上bug调式——AutoResponder
(1)可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。
因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本之后,再修改服务器端的内容,这可以保证,尽量在真实的环境下去调试,从而最大限度的减少bug发生的可能性。
(2)不仅是单个url,Fiddler支持多种url匹配的方式:
I. 字符匹配
如 example可以匹配 http://www.example.com和http://example.com.cn
II.完全匹配 以EXACT开头表示完全匹配,
如上边的例子 EXACT:http://blog.csdn.net/ohmygirl
III. 正则表达式匹配
以regex: 开头,使用正则表达式来匹配URL
如:regex:(?insx).*.(css|js|php)$
表示匹配所有以css,js,php结尾的请求url
(3)、操作——模拟
http://cn.babybus.com/join/index_campus.shtml下的function_campus.js文件
欢迎点赞、关注和评论、一键三连哦!
如果你也是技术宅,如果你也对技术渴望提升,那么我们是同一类人,欢迎大家关注我的个人公众号,我们一起进步吧!
如果对你有帮助,赞赏也是对我最大的支持。