zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    RadGrid Expand/Collapse on Row click
    AutoComplete Textbox with Additional Parameters From Database
    Combobox.Items中添加项Items
    JavaScript 处理字符串(操作字符串)
    用nettiers + svn + resharper + rad + ccNet开发前的准备工作
    Document.location.href和.replace的区别
    .net remoting的事务传播以及wcf分布式事务
    IDA反汇编/反编译静态分析iOS模拟器程序(三)函数表示与搜索函数
    [置顶] 一道有趣的逻辑题
    mini2440uboot移植基本操作指令
  • 原文地址:https://www.cnblogs.com/ericness/p/12741184.html
Copyright © 2011-2022 走看看