fiddler使用教程
一、总述
本文将按照fiddler原理、菜单栏、工具栏、会话列表、命令行-状态栏、以及辅助标签栏六个部分对fiddler进行说明。
二、fiddler原理
通过监听客户端和服务端之间的通信,来获取我们想要的数据信息。
- 首先FIddler截获客户端浏览器发送给服务器的fiddler,此时还未建立握手;
- 第一步:fiddler向服务器发起请求进行握手,获取到服务器的CA证书,用根证书公钥进行解密,验证服务器数据签名,获取服务器CA证书公钥;
- 第二步:Fiddler伪造自己的CA证书,冒充服务器证书传递给客户端浏览器;
- 第三步:客户端浏览器生成HTTP(S)通信用的对称密钥,用fiddler伪造的证书公钥加密后传递给服务器,被Fiddler截获;
- 第四步:Fiddler把截获的密文用自己伪造证书的私钥解开,获得HTTPS通信用的对称密钥;
- 第五步:Fiddler将对称密钥用服务器证书公钥加密传递给服务器,服务器用私钥解开后建立信任,握手完成 ,用对称密钥加密消息,开始通信;
- 第六步:Fiddler接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文,再次加密,发送给客户端浏览器;
- 第七步:客户端向服务器发送消息,用对称密钥加密,被Fiddler截获后,解密获得明文。
fiddler自己的系统代理监听端口:8888
chrome浏览器和IE浏览器默认使用的是系统(本机)代理,其他浏览器如firefox需要在浏览器中设置。
三、菜单栏
- file:主要对会话列表的内容进行展示、保存、导出、导入等操作
- edit:对会话列表中的内容进行复制、删除、全选、标记、搜索等操作。
- rules:制定规则
- hide image requests:隐藏图片请求
- hide connects:隐藏https连接
- automatic breakpoints:自动断点设置 customize rules:弱网模拟,默认是上传时1kb发送延迟300ms;下载时1kb延迟150ms;参数可更改,设置后同时勾选rules-->performance-->simulate modem speeds生效
-
- require proxy authentication:密码代理验证
- apply gzip encoding:使用gzip编码
- remove all encoding:删除全部编码
- hide 304s:隐藏304会话
- request Japanese content:发送日文请求
- automatically authenticate:自动进行身份验证
- user-agents:用户代理设置,支持主流浏览器
- performance:低速网络
- simulate modem speeds
- Performance--->Disable Caching禁止缓存
- Performance--->Cache Always Fresh新的缓存
- tools:
- tools工具栏中本文只介绍options中的https和connections两个模块
-
- https:fiddler默认接收https和http请求,但是只在会话列表中显示http请求,https请求在会话列表中是看不到的,https需要证书进行解密。那么怎么设置让我们用户能在会话列表中看到https请求的内容呢?
- tools-->options-->https,然后勾选第一项【capture https connects】和第二项【decrypt https traffic】,然后再在【谷歌浏览器】中输入www.baidu.com,如果仍然抓不到https的请求,那么就点击【actions】----->【reset all certificates】------>根据提示重装证书---->点击【actions】下面的【open windows certificates manager 】(证书管理器)---->【操作】---->【查找证书】------>【搜索fiddler】如果搜索到就表示https证书重装成功
- Firefox上抓https流量:打开【Firefox】--->【设置】--->【使用系统代理】---->【配置系统代理】---->【tools】---->【options】----->【https】---->【actions】---->【reset all certificates】--->【根据提示重装证书,有证书就不用重装了】---->【export root certificates to desktop】---->【导出到桌面】----->【在Firefox的设置中安装证书】------>【重启fiddler】和【Firefox】
- https:fiddler默认接收https和http请求,但是只在会话列表中显示http请求,https请求在会话列表中是看不到的,https需要证书进行解密。那么怎么设置让我们用户能在会话列表中看到https请求的内容呢?
- connections:默认监听端口为8888
- Android抓app流量包:【fiddller】--->【tools】---->【options】----->【connections】---->【allow remote computers to connect】---->【将手机连接在与fiddler相同的网络下】---->【打开手机WLAN】---->【连接WLAN后,点击修改网络】---->【设置代理】----->【手动】----->【服务器主机名:fiddler安装在哪台电脑,就填哪个IP和端口】----->【打开手机浏览器。并访问主机IP和端口】---->【下载fiddler证书】----->【证书下载后,打开手机设置】---->【安全】----->【加密和凭据】----->【从存储设备安装】----->【选择下载好的证书进行安装】---->安装成功后,查看受信任的证书----->用户,如果用户中有证书,表示证书安装成功,就可以启动app进行测试了,测试完成后记得关闭代理,不然可能无法上网。
- view:视图相关
- Show Toolbar ——控制Fiddler工具栏是否可见(显示工具栏)
- Default Layout ——默认布局
- Stacked Layout ——堆叠布局
- Wide Layout ——全部布局
- Tabs ——制表符
- Statistics ——性能统计分析 页签,快捷键 F7
- Inspector ——检查器 页签,快捷键 F8
- Composer——设计器(构造)页签,快捷键 F9
- Minimize to Tray——缩小为任务栏图标,快捷键 Ctrl + M
- Stay on Top——使Fiddler窗口置顶
- Squish Session List——水平收缩/展开 Session 列表,快捷键 F6
- AutoScroll Session List——控制当添加新的Session时,Fiddler是否会自动滚动到Session列表的底部
- Refresh——刷新,快捷键 F5
- help:帮助
四、工具栏
从左至右依次为:
- winconfig:配置Windows上自带的应用程序
- 消息框:备注信息,用于会话列表中展示session中的备注信息
- replay:重放请求,可用于重放攻击。选中会话列表中的某一条请求,点击replay或者按R键,可以重新发送一次请求;shift+replay:可以批量发送请求;
- X:删除
- go:跳过,需配合断点功能使用
- stream:分为流模式和缓冲模式两种,默认为缓冲模式。流模式:实时通信模式,有信息就返回;缓冲模式:等待所有的请求都到一起在返回。
- decode:解码,有的会话乱码时,点击这个按钮可以解码
- keep:all sessions:可选择会话列表中展示session的数量
- any process:选择监听的程序后,fiddler就只监听该程序,如点击按钮,然后拖拽至某个网页,就可以监听该网页的通信请求。默认监听所有的程序。
- find:查找
- save:保存
- 截图:
- 时钟:计时器
- browse:选择浏览器
- clear cache:清除缓存
- textwizard:编码工具/解码工具
- tearoff:分离面板
- msdn search:开发者网站的搜索功能
- online:本机的在线信息
五、会话(session)列表(监控列表)
一个请求就是一个会话,功能如下:
- #:默认正序,点击后变为倒序
- result:响应状态码
- protocal:协议
- host:主机名
- url:
- body:body大小(kb)
- content-type:内容类型
- process:进程信息
- comments:备注信息
- custom:自定义
- 以上这些都是可以拖动的,拖动相当于横向排序
六、命令行和状态栏
- 命令行:在命令行中输入help,可以转到官方帮助文档
- capturing:捕获,录制会话。出现capturing表示fiddler设置了代理,点击后,表示取消代理
- all process:显示所有进程,可供选择
- 断点:点一下表示设置”请求前断点“(请求由客户端发送至fiddler,而fiddler还没有将请求发送至服务端,点击”go“后,可以将请求由fiddler发送至服务端),点两下表示设置”响应后断点“(响应已经从服务端返回至fiddler,但fiddler还没有将请求返回至客户端,点击”go“后,可以将返回的响应结果由fiddler发给客户端)
- 数字:表示当前会话列表总共有多少个会话,选中某个会话后,变为该 会话所在序号/会话总数 ,同时展示该会话的附加信息
七、辅助标签栏
- get started:首页
- statistics:性能统计分析。统计http或https请求的性能和其他数据分析,如dns,解析时间,建立tcp/ip连接时间等
- inspectors:检查器,检查一个请求。记录http请求的信息,一个http请求包含请求报文(请求行、请求头、空白行和请求体)和响应报文(响应状态行、响应头、空白行和响应体)两个部分。
- autoresponder:自动响应器:可以用于拦截某一请求,进行如下操作
- 重定向fiddler的内置响应
- 使用fiddler的内置响应
- 自定义响应
例如,当用户请求【www.baidu.com】时,就重定向到【https://mail.163.com/】
【自动响应结果】
【使用fiddler内置的响应结果】将百度首页重定向响应结果为404
【重定向到本地资源】
如下图所示进行操作:【rule editor】中第一项为百度首页的图片地址,第二项点击右侧的【下拉箭头】,然后选择【find a file】,双击选择图片后,点击【保存】按钮。
【响应结果】
- composer:设计器。可用于设计一个请求报文,然后execute执行,可用于接口测试
- filter:过滤器。点击【filters】后,然后勾选【use Filters】就可以设置过滤的内容了。
八、断点应用
断点根据应用场景可以分为【全局断点】和【局部断点】,如下图所示的两种方式都是设置【全局断点】。
全局断点:会话列表中所接收到的所有请求都设置断点。
局部断点:只针对某一个或某一类请求设置断点。
1、全局断点设置
【请求前断点】
【响应后断点】
点击【replay】进行重放攻击后,【浏览器】中网络中断,点击【go】后,【浏览器】转圈的图片正常显示,同时【fiddler】请求正常接收。
2、局部断点设置
用户想要设置局部断点,需要通过命令行去设置。
【请求前断点】:bpu + 空格 +匹配内容,如我要将【www.baidu.com】中的请求设置为局部断点
按enter键,然后再打开百度首页,发现【百度】点击无反应,同时【fiddler】出现上图所示的【请求前断点】标记。
【响应后断点】:在命令行输入【bpafter】+ 【空格】+【匹配内容】,如bpafter www.baidu.com,百度网络中断,同时fiddler所有符合匹配内容为www.baidu.com的请求都设置了响应后断点。
【中止断点】:bpu+空格+enter键