文章目录
Fiddler 抓包教程
一、下载及安装
1.下载
Fiddler 下载地址:https://www.telerik.com/download/fiddler
2.安装
二、PC 端抓包
1.抓取 HTTP 协议
打开 Fiddler
工具,打开任意一个浏览器,输入想要抓取的网址。如:www.baidu.com
查看会话列表,选择其中一个会话,查看请求信息中 Inspectors
,查看详细数据
2.解析 HTTPS 加密请求
如上图所示,请求左边是一个锁的样式,右边返回内容中提示了"This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
"
需要配置 Fiddle
来解析这些加密的请求,根据第二行那句"enable the Tools > Options > HTTPS > Decrypt HTTPS traffic option.
"
步骤:
Tools
->Options
->HTTPS
-> 勾选Decrypt HTTPS traffic
- 点击
Actions
->Trust Root Certificate
-> 选择Yes
三、移动端抓包
Fiddler 配置连接信息:
Tools
-> Options
-> Connections
,设置代理端口 8888
,勾选 Allow remote computers to connect
,点击 ok
在 Fiddler
中就可以看到本机的无线网卡 IP
了,也可以 cmd
-> ipconfig
查看
要通过 Fiddler
对手机抓包,需要保证 Fiddler
所在的电脑和手机必须处在同一个局域网内,即连着同一个路由器
。
步骤:
- PC 端打开热点
- 手机连接 PC 端热点
- 配置代理
手动
->服务器:<电脑ip>
->端口:8888
- 浏览器访问:
<电脑ip>:8888
- 下载并安装证书
- 证书安装完成后,用手机访问应用时,就可以看到抓取到的数据包了
四、其它
1.筛选
点击右侧 Filters
-> 勾选 Use Filters
Hosts
下面,第一个选项:空间过滤
第二个选项:主机名过滤
空间过滤:区分内网跟外网
No Zone Filter
:不通过空间进行过滤
show only Intranet Hosts
: 内网
show only Internet Hosts
: 外网
主机名过滤:
No Host Filter
:不通过主机名过滤
Hide the following Hosts
:隐藏下边输入的主机名的请求
Show only the following Hosts
:只显示下边输入的主机名的请求
Flag the following Hosts
:标记下边输入的要过来的主机名的请求,黑色粗体标记
筛选指定主机名:
-No Host Filter-
选择Show only the following Hosts
- 输入框输入要筛选的主机名:如
www.baidu.com
,多个Host
时用分号分隔,输入框为黄色代表未保存Actions
->Run Filterset now
:马上执行过滤
其他过滤方法:
2.展示接口的响应时间
2.1 直接点击接口查看接口响应时间
2.2 新增一列展示接口响应时间
Rules
-> Customize Rules…
-> 搜索:class Handlers
在类里增加以下方法:
// 显示每行请求的服务端耗时时间
public static BindUIColumn("Time Taken", 80)
function CalcTimingCol(oS: Session){
var sResult = "0";
if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest)) {
sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).TotalMilliseconds.ToString("N0");
}
return sResult + "ms";
}
保存,重新打开 fiddler 就能看到每个请求的耗时了。单位毫秒
更多方法:
// 显示每行请求的发起时间:时分秒毫秒
public static BindUIColumn("BeginTime", 80)
function BeginTimingCol(oS: Session) {
return oS.Timers.ClientDoneRequest.ToString("HH:mm:ss.fff");
}
// 显示每行请求的响应时间:时分秒毫秒
public static BindUIColumn("EndTime", 80)
function EndTimingCol(oS: Session) {
return oS.Timers.ServerDoneResponse.ToString("HH:mm:ss.fff");
}
// 显示每行请求的服务器IP
public static BindUIColumn("ServerIP", 80)
function xxxdColumn(oS: Session): String {
return oS["X-HostIP"];
}
3.http 请求的 host 参数值为 Tunnel to
fiddler
做代理转发 https
请求时,就会产生:CONNECT Tunnels
,可以不管它。
4.开启 Fiddler 后 Postman 无法发起请求
关闭 SSL 设置:Settings
-> General
-> 关闭:SSL certificate verification