全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测

哈喽,我是二黑,这里赠送一份软件测试资料

  • 1、软件测试学习路线
  • 2、软件测试视频资料
  • 3、软件测试相关文档
  • 4、软件测试相关工具、安装包
  • 5、高级测试工程师简历模板
  • 6、面试题、模拟面试、PDF文档

有需要的小伙伴们可以关注我的公众号:程序员二黑,免费领取


文章目录
  • 一、前言
  • 二、HTTP协议
  • 三、Fiddler简介和工作原理
  • 四、Fiddler六大块详解
  • 五、Fiddler过滤器
  • 六、Fiddler 对于WEB项目的抓包和改包项目实战
  • 七、Fiddler弱网测试
  • 八、Fiddler抓取https协议的数据报文和移动端抓包测试
  • 推荐阅读

一、前言

抓包工具有很多,比如常用的抓包工具Httpwatch,通用的强大的抓包工具Wireshark。为什么使用Fiddler?原因如下:

  1. Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用。
  2. Httpwatch也是比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力。

而Fiddler是一个使用本地127.0.0.1:8888的HTTP代理,任何能够设置HTTP代理为127.0.0.1:8888的浏览器和应用程序都可以使用Fiddler。那么想要精通抓包,首先必须对协议比较了解,所以下面我们首先了解一下协议。

二、HTTP协议

  1. HTTP协议

    支持客户/服务器模式。简单快速,无连接,无状态。

    HTTP协议:默认端口:80

    HTTPS=HTTP协议+SSL安全传输协议:默认端口443

  2. HTTP协议请求详解

    请求行,请求头,空一行,请求正文

    • Accept 指定客户端能够接收的内容类型
    • Accept-Charset 浏览器可以接受的字符编码集。
    • Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。
    • Accept-Language 浏览器可接受的语言
    • Cookie HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
    • Content-Length 请求的内容长度
    • Content-Type 请求的与实体对应的MIME信息
    • Date 请求发送的日期和时间
    • Host 指定请求的服务器的域名和端口号
    • Referer 先前网页的地址,当前请求网页紧随其后,即来路
    • User-Agent 发出请求的用户信息
  3. HTTP协议响应详解

    响应行,响应头,空一行,响应正文

    响应头的信息和请求头很类似,这里不在累述!

三、Fiddler简介和工作原理

  1. Fiddler简介

    Fiddler是位于客户端和服务器端的HTTP代理。

    目前最常用的http抓包工具之一。功能非常强大,是web调试的利器。

    工作中常用场景:接口调试、接口测试、线上环境调试、判断前后端Bug、mock测试、弱网测试。

  2. Fiddler下载和安装

    Fiddler官网下载地址:Fiddler官网

    Fiddle证书生成器下载地址:Fiddler证书生成器

    Fiddler安装注意事项:不要安装在有中文和特殊字符的目录

  3. Fiddler的工作原理:

    Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,

    关掉Fiddler、谷歌和IE浏览器的代理服务器会自动取消。如果Fiddler非正常退出,因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动Fiddler。

四、Fiddler六大块详解

  1. Fiddler回话列表

    • 请求的ID编号
    • http响应状态码
    • 会话使用的协议
    • 请求发送到的服务器主机名
    • 数据包在服务器中的路径和文件
    • 响应body的字节数
    • 响应头信息Cache-Control的值
    • 响应头信息Content-Type的值
    • 发起请求的本地windows进程
    • 注释
    • 自定义备注
  2. Fiddler功能页签

    • Statistics页签:通过该页签,用户可以通过选择多个会话来得到这几个会话的总的信息统计,比如多个请求传输的字节数。访问页面时选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行速度性能优化。
    • inspectors页签:它提供headers、textview、hexview,Raw等多种方式查看一条http请求的请求和响应,它分为上下两部分:上部分为请求展示,下部分为响应展示。
    • AutoResponse页签:它可以抓取在线页面保存到本地进行调试,大大减少了在线调试的困难,可以让我们修改服务器端返回的数据,例如让返回都是404的数据包读取本地文件作为返回内容。
    • composer页签:支持手动构建和发送HTTP,HTTPS和FTP请求,我们还可以从回话列表中拖曳回话,把它放到composer选项卡中,当我们点击Execute按钮时则把请求发送到服务器端。
    • FiddlerScripts页签:打开Fiddler脚本编辑。
    • log页签:打印日志
    • Filters页签:过滤器可以对左侧的数据流列表进行过滤,我们可以标记、修改或隐藏某些特征的数据流。
    • Timeline页签:时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为X轴,用图表的形式展现出来,就形成了瀑布图。在左侧会话窗口点击一个或多个回话,Timeline便会显示指定内容从服务端传输到客户端的时间。
  3. 菜单栏

    • File菜单
      • Capture Traffic:可以控制是否把Fiddler注册为系统代理。
      • New Viewer:打开一个新的fiddler窗口
      • Load Archive:用于重新加载之前捕获的以SAZ文件格式保存的数据包。
      • Save:支持以多种方式把数据包保存到文件中。
      • Import Sessions…:支持导入从其他工具捕获的数据包,也支持导入以其他格式存储的数据包。
      • Export Sessions…:把Fiddler捕捉到的回话以多种文件格式保存。
      • Exit:取消把Fiddler注册为系统代理,并关闭Fiddler。
    • Edit菜单
      • Copy:复制会话。
      • Remove:删除会话。
      • Select All:选择所有会话。
      • Undelete:撤销删除会话。
      • Paste as Session把剪贴板上的内容粘贴成一个或多个模拟的会话。
      • Mark:选择一种颜色标记选中会话。
      • Unlock for Editing 解锁会话。
      • Find Session…打开Find Session窗口,搜索捕获到的数据包。
    • Rules菜单
      • Hide Image Request:隐藏图片回话。
      • Hide CONNECTS:隐藏连接通道回话。
      • Automatic Breakpoints:自动在[请求前]或[响应后]设置断点。Ignore Image触发器控制这些断点是否作用于图片请求。
      • Customize Rules…:打开Fiddler脚本编辑窗口。
      • Require Proxy Authentication:,要求客户端安装证书。该规则可以用于测试HTTP客户端,确保所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应码。
      • Apply GZIP Encoding:只要请求包含具有gzip标识的Accept-Encoding请求头,就会对所有响应使用GZIP HTTP进行压缩(图片请求除外)。
      • Remove All Encoding:删除所有请求和响应的HTTP内容编码和传输编码
      • Hide 304s:隐藏响应为HTTP/304 Not Modified状态的所有回话。
      • Request Japanese Content:选项会把所有请求的Accept-Encoding请求头设置或替换为ja标识,表示客户端希望响应以日语形式发送。
      • User-Agents:把所有请求的User-Agent请求头设置或替换成指定值。
      • performance:模拟弱网测试速度。
    • Tools菜单
      • Options…:打开Fiddler选项窗口。
      • WinINET Options…打开IE的Internet属性窗口
      • Clear WinINET Cache:清空IE和其他应用中所使用的WinINET缓存中的所有文件。
      • Clear WinINET Cookies:清空IE和其他应用中所发送的WinINET Cookie
      • TextWizard…:选项会启动TextWizard窗口,对文本进行编码和解码。
      • Compare Session:比较回话。
      • Reset Script:重置Fiddler脚本。
      • Sandbox:打开http://webdbg.com/sandbox/
      • View IE Cache:打开IE缓存窗口。
    • View菜单
      • Show Toolbar:控制Fiddler工具栏是否可见
      • Default Layout、Stacked Layout、Wide Layout三种界面布局
      • Minimize to Tray:最小化Fiddler到系统托盘(快捷键:CTRL+M )
      • Squish Session List:控制回话列表是否水平收缩。
      • AutoScroll Session list:添加新的回话时,自动滚动到回话列表底部
  4. 工具栏详解:

    • 备注功能
    • 重新发送请求,快捷键:R键。
    • 删除请求
    • 当有请求前断点时,点击去发送请求。
    • 流模式。(默认是缓冲模式)
    • 解码
    • 保持回话的数量。
    • 选择你想要抓包或者监听的程序
    • 查找
    • 保存所有会话,文件名以.saz为扩展名
    • 截图
    • 计时器
    • 快捷的打开IE浏览器
    • 清除IE缓存
    • 文本的编码解码工具
    • 分离面板
    • MSDN查询
    • 本机的信息
  5. 状态栏详解:

    • 显示的Fiddler是否处于捕捉状态(开启/关闭状态),可以点击该区域切换。
    • 显示当前捕捉哪些进程。
      • All Processes 捕获所有进程的请求
      • Web Browsers 捕获 Web 浏览器的请求,应该特指 IE
      • Non-Browser 捕获非 Web 浏览器的请求
      • Hide All 隐藏所有请求
    • 显示当前断点设置状态,通过鼠标点击切换。有三种:
      • 不设置断点
      • 所有请求在断点处被暂停
      • 所有响应在断点处被暂停
    • 显示当前共捕获了多少回话(如:300,表示共捕获了300个会话,如:10/300,表示当前选择10个会话,共捕获300个会话)。
    • 第五区块,描述当前状态。
      • 如果是刚打开Fiddler,会显示什么时间加载了CustomRules.js;如果选择了一个会话,会显示该会话的URL;如果在命令行输入一个命令,就会显示命令相关信息。
  6. Fiddler命令行可以输入命令操作回话列表,常见命令有:

    • help 打开官方的使用页面介绍,所有的命令都会列出来。
    • cls 清屏 (Ctrl+x 也可以清屏)
    • select 选择所有相应类型的回话(如select image或select?css)。
    • ?sometext 查找字符串并高亮显示查找到的会话。
    • size 选择请求响应大小小于size字节的会话。

    • =status/=method/@host 查找状态、方法、主机相对应的会话
    • 1uit 退出fiddler
    • bpafter?xxx 中断URL包含指定字符的全部回话响应
    • bps?xxx 中断HTTP响应状态为指定字符的全部回话响应。
    • bpv?xxx 中断指定请求方式的全部回话响应
    • bpm?xxx 中断指定请求方式的全部回话响应。等同于bpv?xxx
    • bpu?xxx: 与bpafter类似。

五、Fiddler过滤器

选择Filters页签,勾选use Filters使用过滤器。

  1. Fiddler过滤指定域名

    • 第二个下拉框[-No Host Filter-]选择[Show Only The Following Hosts]只显示过滤的域名。
    • 如只监控百度,在下面的输入框里填上:http://www.baidu.com
  2. Fiddler过滤指定路径

    • 勾选 Request Headers 中的[show only if URL contains]。
    • 勾选Request Headers中的【Show only if URL contains】输入正则:REGEX:(?insx)..?http://baidu.com/home.

    只显示路径为:http://baidu.com/Home 的数据包。

  3. Fiddler过滤指定文件格式

    • 勾选Request Headers中的【Hide if url contains】过滤项,
    • 在后面输入:REGEX:(?insx)/[^?/].(css|ico|jpg|png|gif|bmp|wav|js)(?.)?$

六、Fiddler 对于WEB项目的抓包和改包项目实战

打开Fidder会自动抓包,如果想要改包的话则在AutoResponder页签,如下图:

七、Fiddler弱网测试

Fiddler应用-弱网测试

  1. Rules->Customize Rules打开Fiddle脚本编辑器(第二种也可以点击页签:FiddlerScript)。找到如下代码:

    if (m_SimulateModem) {
        // Delay sends by 300ms per KB uploaded. 上行每发送1KB延迟300ms
        oSession["request-trickle-delay"] = "300";
        // Delay receives by 150ms per KB downloaded. 下行每接收1KB延迟150ms
        oSession["response-trickle-delay"] = "150";
    }
    

    1kByte/s=8kbit/s(一般简写为1kB/s=8kb/s)。

    上传带宽=(1 * 8/1000) /0.300 ≈ 0.027Mbps

    下载带宽=(1 * 8/1000) /0.150 ≈ 0.053Mbps

    修改其中的300ms和150ms用于设置上行和下行的延迟速度。并重启Fiddler使设置生效。

    比如你要模拟上传速度100KBps的网络,那上传延迟就是1KB/100KBps=0.01s=10ms,就改成10。

    网络取值的算法就是 1000/速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay200毫秒来接收数据。

  2. Rules->Performance->勾上Simulate Modem Speeds开启模拟调制解调器速度。

  3. 通过http://www.speedtest.cn/在线测试网速,看是否生效。访问浏览器查看加载速度。

八、Fiddler抓取https协议的数据报文和移动端抓包测试

  1. Fiddler设置:菜单栏中选择tools->option,做如下两个设置:

  2. Fiddler应用-抓取基于https协议的数据报文。

    • 清理环境(首次安装Fiddler不需要清理)
      • 卸载Fiddler软件以及根证书生成器Fiddler2 CertMaker。
      • 清除C:\Users\Administrator\AppData\Roaming\Microsoft\Crypto\RSA目录下所有的RSA算法文件,此算法文件和非对称公钥密钥加密相关。
      • 清除电脑上的根证书,WIN+R快捷键,输入: certmgr.msc, 然后回车,查找fiddler证书,然后删除。
      • 清除浏览器上的证书文件,以谷歌浏览器为例说明,在浏览器上输入:chrome://settings/,进入[高级]->[管理证书],有"受信任的根证书颁发机构"列表。此处需要仔细查找带有DO_NOT_TRUST_FiddlerRoot的字样,并删除。
    • 安装并配置Fiddler抓取Https数据报文。
      • 下载并安装fiddler,官网下载地址:Fiddler官网
      • 下载并安装Fiddler证书生成器,官网下载地址:Fiddler证书生成器
      • 打开Fiddler,点击菜单栏中的Tools—>Options,选择HTTPS页签。勾选Decrypt HTTPS CONNECTs(解密https连接),Fiddler证书生成器会自动判断本机是否安装Fiddler证书,没有则弹出如下证书安装页面。点击”Yes”按钮,在新弹出的窗口中再点击”确定”后则Fiddler证书安装完成。接下来Fiddler就可以抓取Https的数据报文。
  3. Fiddler应用-抓取基于https协议的手机报文。

    • Fiddler抓取手机端的https协议数据报文。
      • 保持android手机和电脑在同一网段。如连接同一无线。
      • 打开android手机的“设置”->“WLAN”,找到你要连接的无线网络并点击,弹出网络设置对话框,在“代理”处选择“手动”,在“主机名”输入框后面输入127.0.0.1,在“端口”输入框后面输入8888,然后点击“保存”按钮。
      • 启动android设备中的浏览器访问百度首页或打开被测App,在fiddler中可以看到抓取到的数据报文了。

推荐阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值