Fiddler抓包工具
一.Fiddler的作用
1.能够监听http/https的流量,可以截获从浏览器或者客户端软件向服务器发送的http/https请求;
2.对已截获之后的请求,还能够查看请求中的内容;
3.能够方便进行前后端的调试,既能够伪造客户端的请求,还能够与伪造服务器的响应
4.能够去测试网站的性能
5.解密https的外部会话,因为https本身是一种加密的协议,可以通过fiddler进行解密操作
6.提供第三方的插件使用
二:Fiddler的工作原理
Fiddler相当于一个代理服务器(proxy)
'''两种代理模式'''
流模式:fiddler会实时把服务器返回给客户端的数据进行返回。
缓冲模式:fiddler会等待所有的请求都准备好了以后才返回给客户端
区别:缓冲模式下可以控制最后的服务器响应;而流模式不能控制,更贴近于浏览器本身的真实行为
根据具体的情况去选择
'''使用场景'''
1.开发环境的host配置
2.前后端接口连调,composer
3.定位线上bug,将发布文件代理到本地,快速定位线上bug
4.性能分析和优化,inspectors, timeline
三:界面介绍及使用
第一列:菜单栏
第二列:工具栏
(1)气泡:备注。添加之后在会话栏的Comment列中显示备注内容
(2)Replay:回放常用,重播一个会话;快捷键:“选中会话+R”
(3)清除会话面板:清除请求,过滤请求×
(4)Go:断点调试。配合状态栏上的断点工具。功能类似于debug
具体步骤:
1.选中请求
2.点击断点调试
3.一会之后,选中的会话进入调试状态
4.点击go进行下一步
(5)Stream:代理模式。默认:缓冲模式,可以点击进行切换
(6)Decode:解压请求。解压http请求里面的东西,帮助查看
(7)Keep:指示fiddler的保持会话数目
(8)AnyProcess:捕获请求,只看需要的请求
(9)Find:查找请求。用颜色标注查找的请求
(10)Save:保存会话
(11)截图:默认5秒后截图
(12)计时器:第一次点击-开始计时;第二次点击-返回计时结果;第三次点击,清零,重新计时。使用右键点击将不计时
(13)Browser:启动浏览器
(14)Clear Cache:清除缓存
(15)TextWizard:编码解码文本内容
(16)Tearoff:浮窗
第三列:会话面板和详情和数据统计面板
'''会话面板'''
Server Ip:需要配置
点击rules,选择Customize Rules...
Ctrl+F : 搜索"static function Main()", 添加代码:
FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP",120,"X-HostIP");
然后重新启动fiddler即可
'''详情和数据统计面板'''
(1)Statistics:数据统计面板,性能分析
# 参数详解:
ClientConnected:客户端创建连接时间
ClientBeginRequest:客户端开始请求时间
GotRequestHeaders:获取请求头时间
ClientDoneRequest:客户端完成请求时间
ServerConnected:服务器创建连接时间
FiddlerBeginRequest:Fiddler代理服务器开始请求时间
ServerGotRequest:服务器获得请求时间
ServerBeginResponse:服务器开始响应时间
GotResponseHeaders:获取响应头时间
ServerDoneResponse:服务器完成响应时间
ClientBeginResponse:客户端开始响应时间
ClientDoneResponse:客户端完成响应时间
'''分为Modem与DSL两种传输介质评估'''
评估内容为:
RTT:往返时延
该数据体现了一个请求从发送到返回响应的时间,通过选择多个会话来得到这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化
Elapsed:运行时间
'''提示世界范围内评估'''
美国西海岸地区
日本/北欧地区
中国地区
(2)Inspectors:对抓到的请求进行解包,查看具体的内容
上边是:清秋头
下边是服务器返回的信息
(3)AutoResponder: 文件代理,例如将一个需要服务端返回的文件,使用本地文件做代理
'''具体步骤'''
1.在decode中选中要代理的线上的文件
2.拖拽至右边
3.再次点击选中线上文件+R,进行回放,此时加载的是本地文件
(4)Composer:前后端接口连调,伪造请求。可以实现不写任何js代码的情况下实现与服务端的接口调试
'''具体步骤'''
1.选中请求拖拽
2.获取信息,可对内容进行更改,伪造成一个请求,Excute执行
(5)Timeline:性能分析,对选择多个请求有意义
'''控制面板'''
(1)命令行工具:执行一些快捷操作
常见的命令有:
help 打开官方的使用页面介绍,所有的命令都会列出来
cls 清屏(ctrl+x也可以清屏)
select 选择会话的命令
?.png 用来选择png后缀的图片
bpu 截获request
(2)状态栏:
Capturing:开启/关闭fiddler的监听
Web Browsers:股票率会话选择
四:常用功能
1.AutoResponder:文件替换线上bug调试
(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)操作——模拟
2.Composer:前后端接口连调
选中一个接口——>拖拽到Composer面板;
'''准备工作:'''
接口请求方式、请求参数;
Get请求:参数直接写在接口里面
Post请求:参数写在Request Body里面
3.FiddlerScript: 网络限速,测试在不同网络下的请求运行状况
将请求代码话
为使用方便不去编写c#代码,可以去使用图形化插件
手机端监听参考网址
'''
https://blog.csdn.net/yue549433330/article/details/82745760
'''
五:web session的常用快捷键
CTRL+A: 选中所有的session;
ESC: 取消选中所有的session;
CTRL+I 反向选中;如果session已选中,则取消,否则选中;
CTRL+X 删除所有的session;
Delete: 删除选中的session;
Shift+Delete 删除所有未选中的session;
R 重新执行当前请求;
SHIFT+R 多次重复执行当前请求
U: 无条件重新执行当前请求,发送不包含If-Modified-Since 和 If-None– Match的请求头;
SHIFT+U 无条件地多次重复执行当前请求;
ALT+Enter 查看当前session的属性;
Insert:切换是否用红色粗体标记选中的session;
M 给选中的session添加描述