Fiddler抓包工具详细讲解

Fiddler简介

  • Fiddler是位于客户端和服务器端的HTTP代理
  • 目前最常用的http抓包工具之一
  • 功能非常强大, 是web调试利器
    • 监控浏览器所有的HTTP/HTTPS流量
    • 查看,分析请求内容细节
    • 伪造客户端请求和服务器响应
    • 测试网站的性能
    • 解密HTTPS的web会话
    • 全局,局部断点功能
    • 第三方插件
  • 使用场景
    • 接口调试
    • 接口测试
    • 线上环境调试
    • web性能分析
    • 判断前后端bug
    • 开发环境hosts配置
    • mock
    • 弱网断网测试

B/S架构

  • 编写程序部署到web服务器
  • web服务器运行在服务器上,绑定ip地址并监听某端口,接收和处理http请求
  • 客户端通过http协议获取服务器上的网页,文档等资源
    B/S架构

工作原理

fiddler工作原理

HTTP协议

HTTP

  • Hyper Text Transfer Protocol(超文本传输协议)
  • 用于从万维网服务器传输超文本到本地浏览器的传送协议
  • HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。
  • http是基于请求和响应模式的,无状态的,应用层协议

HTTP请求

请求方法 (Request Method)

请求方法备注
GET请求资源
POST提交资源
Head获取响应头
PUT替换资源
DELETE删除资源
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,用于测试或诊断

URL

  • Uniform Resource Locator 统一资源定位符
    • 用于描述网上的资源
  • 格式:schema://host[:port#]/path/…/[?query-string]
    • scheme: 协议,如http, https, ftp等
    • host: 域名或者IP地址
    • port: 端口
    • path: 资源路径
    • query-string:发送的参数

请求头 (Request Header)

常见的请求头,开发还可以自定义其他请求头。

请求头描述
Host主机ip地址或域名
User-Agent客户端相关信息,如操作系统,浏览器等信息
Accept指定客户端接收信息类型,如image/jpg, text/html, application/json
Accept-Charset客户端接受的字符集,如gb2312, iso-8859-1
Accept-Encoding可接受的内容编码,如gzip
Accept-Language接受的语言,如zh-cn
Authorization客户端提供给服务端,进行权限认证的信息
Cookie携带的cookie信息
Referer当前文档的URL,即从哪个链接过来的
Content-Type请求体内容类型,如application/x-www-form-urlencoded
Content-Length数据长度
Cache-Control缓存机制,如no-cache
Pragma放置页面被缓存,相等于Cache-Control: no-cache

状态码 (Status Code)

  • 用于表示网页服务器HTTP响应状态的3位数字代码
    |状态码| 描述 |
    |–|--|
    | 1XX | 提示信息,请求被成功接收 |
    | 2XX | 成功,请求被成功处理 200 |
    | 3XX | 重定向相关 304 |
    | 4XX | 客户端错误 404 |
    | 5XX | 服务器端错误 500 |

响应头 (Response Header)

常见的响应头信息,也可以自定义。

响应头描述
ServerHTTP服务器的软件信息
Date响应报文的时间
Expires指定缓存过期时间
Set-Cookie设置cookie
Last-Modified资源最后修改时间
Content-Type响应的类型和字符集, 如content-type: text/html;charset=utf-8
Content-Length内容长度
Connection如Keep-Alive, 表示保持tcp连接不关闭,不会永久保持连接,服务器可设置
Location指明重定向的位置,新的URL地址,如304的情况

Fiddler下载安装

下载地址: https://www.telerik.com/download/fiddler

记住:是下载Fiddler Classic。

下载完成后,一路安装就可以了。

Fiddler工具条讲解

Fiddler工具介绍

开始抓包

端口号

给接口添加备注信息

在这里插入图片描述

重放请求

  • 单次重放请求
    选中请求,点击Replay按钮或者键盘R键。
    在这里插入图片描述
  • 多次重放请求
    选中请求,按Shift+R键。
    在这里插入图片描述
    注意:Fiddler请求是串行的,不是并发。

删除请求

选中请求,键盘按Delete请求。
如果想要一次删除多个请求,先按Ctrl键,选中需要保留的请求,再按Shift+Delete键,批量删除其他请求。
另外也可以通过Fiddler上的remove图标移除指定请求。
注意:Ctrl + X是删除所有请求的快捷键。
在这里插入图片描述

断点

  • 为什么要打断点呢?

    比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于100的情况下。很显然前端只能输入大于100的。这是我们可以先抓到接口,修改请求参数,绕过前端,传一个小于100的数,检查服务端的功能是否OK。

    也就是说接口测试其实是不需要管前端的,主要测后端的功能。

  • Fiddler可以修改以下请求

     - Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等
    
     - 可以修改请求数据,突破表单限制,提交任意数字,如充值最大100,可以修改成10000
    
     - 拦截响应数据,修改响应体,如修改服务端返回的页面数据
    
  • 断点的两种方式

    • before response:这个是打在request请求的时候,未到达服务器之前
    • after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。
  • 全局断点设置
    在这里插入图片描述

  • 状态栏空白处点击可以设置快捷设置断点。选中请求,点一下,再按一下键盘R。
    在这里插入图片描述

    • 点一下是请求前断点。
      在这里插入图片描述
    • 点两下是响应后的断点
      在这里插入图片描述
  1. 释放断点请求
    在这里插入图片描述
    可参考文章:https://blog.csdn.net/FloraCHY/article/details/121283150

流模式

一般默认使用的是缓冲模式。
在这里插入图片描述

解码

点击Decode按钮,对所有请求进行解码。
在这里插入图片描述

保存会话

在这里插入图片描述

Any Process

选择需要监听的程序。
在这里插入图片描述

鼠标点击并按住不放,选中需要抓包的应用。
在这里插入图片描述

Find

查找请求。
快捷键:Ctrl + F
在这里插入图片描述

save

保存所有的请求,方便定位问题。保存的文件后缀是*.saz。
在这里插入图片描述

截图

在这里插入图片描述

计时器

点一下开始计时,再点一下结束计时。可以用来辅助查看请求响应时间。
在这里插入图片描述

浏览器

快捷打开浏览器。先选中请求,再点击Browser按钮。
在这里插入图片描述

清除IE缓存

在这里插入图片描述

编码解码

使用场景:比如密码需要使用MD5加密,用这个工具就可以实现,不需要去网上额外找其他工具。
在这里插入图片描述

分离面板

在这里插入图片描述

online

显示本机的在线信息。
在这里插入图片描述

Fiddler会话列表讲解

会话已有列说明

Fiddler抓取到的每条http请求称为一个session。
主要包含了请求的ID编号,状态码,协议,主机名,URL, 内容类型, body大小,进程信息,自定义备注等信息。

  • [#]: HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。
  • [result]:HTTP的响应状态
  • [Protocol]:请求使用的协议,如HTTP/HTTPS/FTP
  • [Host]:请求地址的域名
  • [URL]:请求的服务器路径和文件名,也包括GET参数
  • [Body]:请求的大小,以Byte为单位
  • [Caching]:请求的缓存过期时间或缓存控制,header等值
  • [Content-Type]:请求的响应类型
  • [Process]:发出此请求windows进程以及进程ID
  • [Comments]:用户通过脚本或者右击菜单给此session增加的备注
  • [Custom]:用户可以通过脚本设置的自定义值
    在这里插入图片描述

Fiddler添加IP

代码: FiddlerObject.UI.lvSessions.AddBoundColumn(“Server IP”, 120, “X-HostIP”);
添加这行代码到Fiddler ScriptEditor的static function Main(){}里面。然后重启fiddler就可以了。
在这里插入图片描述
在这里插入图片描述

注意:如果遇到这个报错 (Failed to launch the editor for FiddlerScript. JSEditor)
在这里插入图片描述
解决办法:
系统找不到指定的文件,文件损失,建议卸载重新安装

Fiddler命令行+状态栏

命令行帮助文档:https://docs.telerik.com/fiddler/knowledge-base/quickexec

Capturing: 显示的时候表示在捕获请求, 点击可切换暂停捕获请求。
All Processes: 表示当前捕获请求的程序。默认是所有程序。

Fiddler辅助标签+工具

Statistics (统计)

HTTP请求的性能和其他数据分析,如DNS解析的时间,建立TCP/IP连接的时间消耗等信息。
在这里插入图片描述

Inspectors(检查器)

可以多种方式查看请求的请求报文和响应报文的相关信息。
在这里插入图片描述

AutoResponder(自动响应器)

用于拦截某一请求,进行如下操作:

  • 重定向本地的资源
  • 使用Fiddler的内置响应
  • 自定义响应

这个功能非常重要!
在这里插入图片描述
具体操作待补充

Composer

填写相关请求信息,执行请求。
在这里插入图片描述

Filter过滤器

在这里插入图片描述

断点的应用

对于测试工程师来说,断言的最大应用在于极端测试。
比如我想看前端页面对于无数据列表如何处理,可以不用删除测试数据。可以通过设置请求后的断点,让接口返回空数据,去查看前端页面的处理方式。

局部断点通过命令设置,命令:bpu 请求名称。

其他断点介绍见上方。

弱网测试

在这里插入图片描述

捕获HTTPS请求

如果需要捕获HTTPS请求,需要在Tools>Options>HTTPS中设置Capture HTTPS CONNECTS。安装HTTPS证书。
如果操作后仍旧不能捕获HTTPS请求,可以在Action中设置一下Trust Root Certificate 并重启Fiddler。
在这里插入图片描述

Firefox抓包

Firefox默认是不使用代理服务器的。我们需要进行配置。可以选择使用系统代理或者手动代理设置。然后给firefox安装fiddler证书就可以了。

选型-高级-网络-使用系统代理
在这里插入图片描述
或者使用手动代理配置在这里插入图片描述
安装证书。
先从fiddler导出证书。然后安装到firefox。重启浏览器就可以了~
在这里插入图片描述
在这里插入图片描述

IOS APP抓包

Fiddler设置

  • 点击Tools>Fiddler Options >Connections
  • 勾选Allow remote computers to connect
  • 重启fiddler
  • 确保防火墙允许Fiddler远程可以远程
  • IOS设备连接WIFI (本机和手机要在同一个网络中)
  • 确保IOS设备可以访问到http://FiddlerMachineIP:8888, 该地址会返回Fiddler Echo Service页面
    在这里插入图片描述

IOS设备设置

  • 点击设置>WIFI>打开连接的wifi设置
  • 点击配置代理>手动
  • 设置IOS代理服务器地址为Fiddler所在主机的IP地址
  • 设置端口为Fiddler监听的端口
  • 点击存储,保存代理设置
  • 打开一个非HTTPS的网站,此时Fiddler已经可以捕获请求了

IOS设备抓取HTTPS请求

  • 在IOS设备打开浏览器,访问http://ipv4:8888/
  • 点击Fiddler Echo Service页面底部FiddlerRoot certificate下载证书
  • 打开FiddlerRoot.cer文件并安装
  • 安装成功后,在通用>关于本机>证书信任设置中,信任刚安装的Fiddler证书
  • safari打开https://www.baidu.com,就可以了

Android 设备设置

Fiddler设置跟上面一样。

  • 手机打开设置>WLAN>连接上的WLAN设置
  • 点击代理>手动,设置主机名为Fiddler所在主机的IP, 端口为Fiddler监听端口
  • 打开Android设备浏览器,访问http://ipv4:8888/
  • 点击页面底部FiddlerRoot certificate下载证书
  • 打开设置>更多设置>系统安全>加密与凭据>从存储设备安装
  • 选择下载好的FiddlerRoot.cer进行安装
  • 浏览器打开https://www.baidu.com就可以抓包了
  • 记住:测试完成后关闭代码,不然无法上网。

(安卓投屏设备:ApowerMirror)

Willow插件

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

下载Willow的地址:http://qzonetouch.github.io/commonWidget/willow

我们在测试过程中经常需要切换不同的环境进行测试,那么在fiddler中自带hosts工具维护比较麻烦。当然也可以通过AutoResponder来设置规则,但是比较麻烦。我们用Willow来 管理比较方便很多。

  • 0
    点赞
  • 7
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

florachy

你的鼓励将是我创作的最大动力!

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值