Fiddler

Fiddler介绍

Fiddler是最主流的抓包工具,位于客户端和服务器端的HTTP代理
作用:

  • 监控浏览器所以HTTP/HTTPS流量
  • 查看、分析请求内容
  • 伪造客户端请求和服务器响应
  • 测试网站性能
  • 解密HTTPS的web会话
  • 全局、局部断点功能
  • 第三方插件

代理:就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端.

Fiddler工作原理:

  • 启动fiddler作为代理服务器,代理地址:127.0.0.1,端口默认为8888
  • IE、 chrome浏览器代理设置会被自动篡改为对应代理地址和端口号(关闭后,浏览器代理设置会自动还原,其他浏览器需手动修改代理服务器配置)
  • client、server请求、响应都会经过fiddler代理服务器被记录下来

代理模式:

  • 流模式stream: fiddler会实时反馈server端响应给client.更接近真实浏览器的性能
  • 缓冲模式buffering: fiddler会等待server所有响应都返回时,才会反馈给client.可以控制响应、修改响应数据

同类工具:httpwatch、 firebug、 wireshark

Fiddler设置浏览器抓包

  • 设置Fiddler代理监听的端口号 Tools->Options->Connections
  • 修改浏览器的代理(IE、Chrome会自动修改代理地址和端口号),其他浏览器需手动设置
  • 启动抓包 File->Capture Traffic / 快捷键F12

Fiddler页面介绍


菜单栏:

  • File:用于导出Session、打开新的Fiddle窗口、保存会话等功能.
  • Edit:用于复制session、host、url、header等、remove session 、标记、以及find Seesion
  • Rules:用于创建规则规则过滤会话.例如可以隐藏掉图片类型的请求,或者304的请求之类
  • Tools: 主要是工具,可在options中设置Fiddler的端口号、Https的请求、connnection等.也可以清除cache
  • View :主要用于Fiddler窗口显示上的问题,例如可以设置ToolBar是否显示等

工具栏

  • 清除所有会话: Ctrl+x
  • Replay: 选中一条会话记录后, 点击replay可以再次请求一次该操作, 快捷键R
  • GO: 继续执行;调试bug,断点拦截请求
  • Stream: 设置代理模式,默认是缓冲模式
  • Decode: 解码
  • Keep:All session: 设置保存会话的数量
  • Any Process: 设置要监控的进程
  • Find: 查找会话
  • Save: 保存会话
  • Browse: 打开浏览器
  • clear Cache: 清除IE缓存
  • TextWizard: 编码格式转换(可以把一段内容转化为Base64、urlencode、MD5等格式)
  • Tearoff: 分离会话区和信息区

会话栏
显示Fiddler抓取的每条请求会话session

  • /#: 序号
  • Result: Http响应状态码
  • Protocol: 协议类型
  • Host: 请求地址域名
  • URL: 访问路径
  • Body: 请求体大小,单位bytes
  • Caching: 请求的缓存过期时间
  • Content-Type: 请求响应的类型
  • Process: 发出此请求的windows进程和进程ID
  • Comments: 会话备注
  • Custom: 用户可以通过脚本设置的自定义
  • Online: 显示本机ip等信息



命令行工具
输入help, 能查看命令行工具文档: https://docs.telerik.com/fiddler/knowledgebase/quickexec

状态栏

  • Capturing: 当处于抓包状态时,显示该样式
  • All Processes: 设置要抓包的进程,默认选择All Processes
  • 空白方框: 设置断点
  • n/m: 共m个会话, 当前选中第n个会话

常用功能

回放

再次请求一个会话: 点击该会话, 再点击Replay按钮(或使用快捷键R)
重复请求一个会话多次: 点击该会话, shift+R, 在弹窗中设置重复请求的次数

断点

根据作用范围不同,分为两种:

  • 全局断点: 针对捕获的每一个会话都设置断点
  • 局部断点: 选中一个会话后,设置断点,配合Replay和Go, 可以对一个会话进行调试
    根据设置断点的时间点不同,分为两种:
  • 请求前断点: 在client发出请求后,控制fiddler代理转发请求给server
  • 响应后断点: 在server返回响应后,控制fiddler代理转发响应给client

断点的作用:可以修改请求包、 响应包的内容

会话栏增加一列

1、页面添加

  1. 右击任一一列,选择Customize Columns
  2. 选择要添加列,并输入列名

2、在fiddler scriptEditor脚本中添加

  1. 打开Fiddler ScriptEditor: Rules->Customize Rules
  2. 搜索"static function Main()", 添加如下内容:FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP") 【添加ip列】

弱网测试

if (m_SimulateModem) {				    // 首先判断m_SimulateModem, 若为true则启用限速
    // Delay sends by 300ms per KB uploaded.        发送请求延迟
    oSession["request-trickle-delay"] = "300"; 
    // Delay receives by 150ms per KB downloaded.   接收响应延迟
    oSession["response-trickle-delay"] = "150"; 
}

操作步骤:

  1. 启用限速: Rule->Performance->勾选Simulate Modem Speeds, 启用限速
  2. 打开Fiddler脚本编辑页: 点击Rule->Customize Rules... (快捷键Ctrl+R)
  3. 设置限速: 搜索"m_SimulateModem", 设置限速时长
  4. 关闭限速: Rule->Performance->取消勾选Simulate Modem Speeds, 关闭限速

Https抓包


1、IE、Chrome浏览器抓取HTTPS流量

  1. 启用HTTPS抓包: Tools->Options->HTTPS->勾选Capture HTTPS CONNECTs 和 Decrypt HTTPS traffic
  2. 安装FiddlerRoot证书: Tools->Options->HTTPS->Actions->Trust Root Certificate (默认fiddler已在系统中安装该证书, 并且Chrome、IE浏览器默认使用系统证书)


    2、Firefox浏览器抓取HTTPS流量
  3. 启用HTTPS抓包
  4. 安装FiddlerRoot证书
  5. Firefox启用Fiddler代理: firefox网络设置->手动代理配置
  6. 在Firefox中安装FiddlerRoot证书: firefox证书管理器->将从fiddler中导入到桌面的证书文件导入, 并重启浏览器

原理: client端需信任Fiddler作为一个代理, 去请求server端. 所以client端需安装FiddlerRoot证书

app抓包

操作步骤:

  1. 启动Fiddler代理和https抓包
  2. 设置允许远程设备连接Fiddler代理: Tools->Options->Connects->勾选Allow remote computers to connect
  3. 确保防火墙允许Fiddler进程可以远程连接
  4. 远程设备连接Fiddler设备的WiFi, 并设置代理ip和端口号
  5. 远程设备访问地址: 代理IP:8080, 点击FiddlerRoot Certificate下载证书
  6. 远程设备安装该证书

Statistics

HTTP请求性能分析、会话请求和响应统计


Inspectors

查看请求和响应内容


AutoResponder

可以用于拦截某一请求,定制响应内容
响应内容的定制方式包括:

  1. 重定向到本地资源;
  2. 使用Fiddler的内置响应;
  3. 自定义响应

操作步骤:

  1. 添加规则: 拖动会话到AutoResponder栏 或 在AutoResponder栏,点击Add Rules
  2. 规则编辑: 在AutoResponder栏Rule Editor中, 填入要重定向的资源路径 和 新的资源路径
  3. 保存规则: 规则设置号之后,在Rule Editor中点击save
  4. 启用规则: 在规则列表,勾选要启用的规则,并勾选Enable Rules启动AutoResponder
  5. 在浏览器重新发起请求

在fiddler中修改响应资源:

  1. 编辑规则: 右键点击规则列表中的某一条规则,在下拉弹窗中选择Edit Response
  2. 在响应编辑页, 选择响应格式为Raw, 直接修改响应内容,并点击Save
  3. 保存规则: 直接点击Rule Editor中的save按钮

注: 响应编辑页Raw格式的响应可能存在乱码,可以在Inspectors中,将Raw格式的响应内容复制到响应编辑页

未匹配到要替换的资源

  • 未勾选Unmatched requests passthrough时,响应中无匹配资源的请求都会报错404
  • 已勾选Unmatched requests passthrough时,不论响应中是否有匹配的资源, 都会请求通过

URL匹配规则

  • EXACT开头: 表示完全匹配
  • regex开头: 表示使用正则表达式进行匹配
  • StringToMatch: 字符串匹配

Composer

用于创建和发送Http请求
优点:

  • 能从会话中拖拽一个捕获到的Request, 进行修改
  • 发送Request后,还能设置断点

两种编辑模式:

  • Parsed模式: 将Request分为三个部分进行编辑: Request line, Request Headesr, Request Body
  • Raw模式: 手动写一个Request

Filters

过滤或标记会话

Fiddler插件

Fiddler插件下载地址:https://www.telerik.com/fiddler/add-ons

posted @ 2020-04-20 22:52  ericness  阅读(156)  评论(0编辑  收藏  举报