参考:
https://blog.csdn.net/weixin_46806288/article/details/124952885
https://www.cnblogs.com/wuxuanlin/p/16070738.html
Fiddler下载、安装及使用
本文内容主要转自 https://blog.csdn.net/weixin_46806288/article/details/124952885,在此基础上进行了部分修改,方便日后使用。
Fiddler是位于客户端和服务器端之间的代理,也是一款好用的抓包工具。打开Fiddler的时候,它会自动给我们的电脑创建一个系统代理,默认监听端口为8888。可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。
一、Fiddler下载
注意:Fiddler2需要.Net v2,Fiddler4需要.Net v4,不管这些一般不需要管,下载用默认的就好了。
官网下载:https://www.telerik.com/download/fiddler
二、Fiddler安装
1.运行FiddlerSetup.exe
2.安装Fiddler
3.选择安装路径,点击install
4.安装完成
5.进入安装文件所在位置,点击Fiddler.exe
三、Fiddler使用
Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并截取到数据。当打开Fiddler时,它就已经设置好浏览器代理了。当我们关闭它的时候,它又会把代理还原。但如果Fiddler非正常退出会影响网络无法访问,需要重新启动Fiddler并再次关闭就可以继续访问网页了。
1.开启或关闭抓包功能
Fiddler想要抓到数据包,要确保Capture Traffic是开启状态,在“File ----> Capture Traffic”。开启后在页面左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。
2.菜单说明
Fiddler开始工作了,抓到的数据包就会显示在列表里面。
名称 | 含义 |
---|---|
# | 抓取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格式 | |
响应是一张图片 | |
响应是XML格式 | |
响应是CSS格式 | |
响应式JSON格式 | |
响应是一个音频文件 | |
响应是一个视频文件 | |
响应是一个SilverLight | |
响应是一个FLASH | |
响应是一个字体 | |
普通响应成功 | |
响应是HTTP/300、301、302、303或307重定向 | |
响应是HTTP/304(无变更):使用缓存文件 | |
响应需要客户端证书验证 | |
服务端错误 | |
会话被客户端、Fiddler或者服务端终止 |
3.Statistics请求的性能数据分析
左边左侧介绍完了,现在介绍右侧;随意点击一个请求,就可以看到Statistics关于HTTP请求的性能以及数据分析了。
4.Inspectors查看数据内容
Inspectors是用于查看会话内容,上半部分是请求的内容,下半部分是响应的内容;
5.AutoResponder允许拦截指定规则的请求
AutoResponder允许拦截指定规则的请求,并返回本地资源或Fiddler资源,从而代替服务器响应。
看下图5步,将“baidu”这个关键字与我的电脑“f:\Users\YukiO\Pictures\boy.jpeg”这张图片绑定了,点击“Save”保存后勾选“Enable rules”,再访问baidu就会被劫持。
这里面有很多匹配规则,如:
1、字符串匹配(默认):只要包含指定字符串(不区分大小写),全部认为是匹配
字符串匹配(baidu)是否匹配
http://www.baidu.com 匹配
http://pan.baidu.com 匹配
http://tieba.baidu.com 匹配
2.正则表达式匹配:以“regex:“开头,使用正则表达式来匹配,这个是区分大小写的
字符串匹配(regex:.+.(jpg | gif | bmp ) $) 是否匹配
http://bbs.fishc.com/Path1/query=foo.bmp&bar 不匹配
http://bbs.fishc.com/Path1/query=example.gif 匹配
http://bbs.fishc.com/Path1/query=example.bmp 匹配
http://bbs.fishc.com/Path1/query=example.Gif 不匹配
6.Composer自定义请求发送服务器
Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求。
Parsed模式下只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)
7.Filters请求过滤规则
Filters是过滤请求用的,左侧的窗口不断的更新,当想看系统的请求的时候,刷新浏览器会出现一大片不知道哪里来的请求,而且这些请求会一直刷新。这个时候我们就可以利用过滤规则来过滤掉那些不想看到的请求。
勾选右上角的User Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host
7.1Zone指定只显示内网(Intranet)或互联网(Internet)的内容:
7.2Host指定显示某个域名下的会话:
- No Host Filter:不通过主机名过滤
- Hide the following Hosts:隐藏不显示下边输入的主机名的请求
- Show only the following Hosts:只显示下边输入的主机名的请求
- Flag the following Hosts:标记下边输入的要过来的主机名的请求,黑色粗体标记
输入框:填写主机名,输入框中多个host时用分号分隔(如果框框为黄色(如图),表示修改未生效,点击红色圈里的文字即可!)
7.3Action:要做什么操作
- Run Filterset now:马上执行过滤
- Load Filterset:加载本地过滤设置文件
- Save Filterset:保存过滤条件
点击Actions,选择Run Filterset now,则过滤出指定host请求,可以Save Filterset 保存一份,以备后续直接导入使用
7.4其它过滤方法
8.Timeline请求响应时间
在左侧会话窗口点击一个或多个(同时按下Ctrl键),Timeline便会显示指定内容从服务端传输到客户端的时间:
9.Fiddler解密HTTPS加密请求
如上图所示,请求左侧是一个🔒的样式,右边返回内容中提示了"This is a CONNECT tunnel, through which encrypted HTTPS traffic flows"。
这时,需要我们配置Fiddler来解析这些加密的请求,根据第二行那句"enable the Tools > Options > HTTPS > Decrypt HTTPS traffic option."
依次点击:
(1)Tools –> Fiddler Options –> HTTPS;
(2)勾选Decrypt HTTPS traffic,点击Actions ----> Trust Root Certificate,选择Yes就可以了
(3)点击OK
10.Fiddler内置命令与断点
Fiddler还有一个藏得很深的命令框:
Fiddler断点功能就是将请求截获下来,但是不发送,这个时候我们可以干很多事,比如说,把包改了,再发送给服务器…
命令 | 对应请求项 | 介绍 | 示例 |
---|---|---|---|
? | All | 问号后边跟一个字符串,可以匹配出包含这个字符串的请求 | |
> | Body | 大于号后面跟一个数字,可以匹配出请求大小,大于这个数字请求 | >1000 |
< | Body | 小于号跟大于号相反,匹配出请求大小,小于这个数字的请求 | <100 |
= | Result | 等于号后面跟数字,可以匹配HTTP返回码 | =200 |
@ | Host | @后面跟Host,可以匹配域名 | @www.baidu.com |
select | Content-Type | select后面跟响应类型,可以匹配到相关的类型 | select image |
cls | All | 清空当前所有请求 | cls |
dump | All | 将所有请求打包成saz压缩包,保存到“我的文档\Fiddler2\Captures”目录下 | dump |
start | All | 开始监听请求 | start |
stop | All | 停止监听请求 | stop |
断点命令
命令 | 对应请求项 | 介绍 | 示例 |
---|---|---|---|
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下图的图标位置,就可以设置全部请求的断点,断点的命令可以精确设置需要截获那些请求。如下示例:
11.Fiddler收集抓包
要通过Fiddler对手机抓包,需要保证Fiddler所在的电脑和手机必须处在同一个局域网内,即连着同一个路由器
win10进入系统设置–>移动热点–>与其他设备共享我的Internet连接,选择开启,让手机连上电脑的热点
Fiddler配置连接信息,Tools–>Options–>Connections,设置代理端口是8888,勾选Allow remote computers to connect,点击ok
在Fiddler中就可以看到本机的无线网卡IP了,也可以cmd–>ipconfig查看
手机端设置电脑的wifi,HTTP代理–>配置代理,改为手动,服务器为上图中的IP,端口是8888
访问网页输入代理IP和端口,下载Fiddler的证书
证书安装完成后,用手机访问应用时,就可以看到抓取到的数据包了