前言

抓包工具有很多,比如常用的抓包工具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、能够监听http/httpS的流量,可以截获从浏览器或者客户端软件向服务器发送的http/https请求;
2、对截获之后的请求,我们还能够查看请求中的内容;
3、伪造请求。不仅可以伪造客户端的请求,还能够伪造服务器的响应。
4、测试网站的性能;
5、解密https的外部会话。因为https本身是一种加密的协议,通过fiddle我们可以进行解密操作;
6、提供第三方扩展插件,满足更多需求。

Fiddler基本原理

官网地址:https://www.telerik.com/fiddler
Fiddler是介于客户端和服务器之间,客户端发起的请求和响应fiddler都能够监听到。
目前最常用的http抓包工具之一。功能非常强大,是web调试的利器
image.png
启动fiddler后,在浏览器中查看局域网代理服务器,如下图
image.png

Fiddler界面熟悉

image.png
image.png
1:给会话添加备注信息
2:重新加载当前会话
3:删除会话选项
4:放行,和断点对应,后面详细讲解
5:响应模式,当Fiddler拿到远程的response后是缓存起来一次响应给客户端还是以stream的方式直接响应。
6:解码。有些请求是被编码的,点击这个按钮后可以根据响应的编码格式自动解码。
7:查找会话。
8:保存会话。
9:截屏。截屏后,会以会话的方式返回一个截图
判断GET或POST
image.png
会话列表属性:
image.png
查看请求和响应:
image.png
删除列表会话,清空列表可以使用Ctrl+X
image.png
任务栏图标说明:
image.png

Fiddler配置Https

1、打开Fiddler Tool->Fiddler Options->HTTPS 。 (配置完后记得要重启Fiddler)
选中”Decrpt HTTPS traffic”, Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示;
若没有弹出提示,勾选Actions-> Trust Root Certificate
另外,如果你要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 “Ignore servercertificate errors” 勾选上
image.png
2、证书安装提示:选“Yes”
image.png
3、点击Yes,留意一下红框里面的内容,DO_NOT_TRUST_FiddlerRoot ,这个就是证书的名称
image.png
4、点击确定,这样Fiddler证书就已经添加成功了。
image.png
5、查看一下证书,Actions—>open windows certificate Manager
image.png

Fiddler导出证书

image.png

浏览器导入Fiddler证书

image.png
image.png
image.png
image.png

Fiddler过滤设置

填写服务器地址多个ip之间需要用 ; 隔开,或者每个ip或域名单独写一行
image.png
Hosts 第二个下拉选说明:

  • No Host Filter 不设置hosts过滤
  • Hide The Following Hosts 隐藏过滤到的域名
  • Show Only The Following Hosts 只显示过滤到的域名

类型过滤:图片、CSS、JS这类的静态素材也不需要看的情况下,直接全部过滤掉
image.png

Fiddler接口测试

GET请求
image.png
POST请求
image.png

Fiddler断点修改请求

基于POST请求:

  1. 第一步:设置Fiddler在请求发送之前拦截接口的请求数据
  2. 第二步:在浏览器中提交表单(第一步配置了的话,这里的表单数据不会立即提交,接口请求会被Fiddler拦截)
  3. 第三步:在Fiddler中修改请求的接口数据
  4. 第四步:在数据库中或者系统中查看提交的数据是否是修改过后的数据

第一步:设置Fiddler在请求发送之前拦截接口的请求数据
菜单栏:Rules -> Automatic Breakpoints -> Before Requests
image.png
第二步:在浏览器中提交表单(这里的表单数据不会立即提交,接口请求会被Fiddler拦截)
image.png
第三步:查看拦截的请求并在Fiddler中修改请求的接口数据
image.png
修改接口数据并提交请求
image.png
提交完成之后,在响应头 Response Headers 中可以响应信息,200表示提交成功
第四步:在数据库中或者系统中查看提交的数据是否是修改过后的数据
image.png

Fiddler断点修改响应

fiddler修改响应数据核心步骤:

  1. 第一步:打抓取响应数据断点
  2. 第二步:在Fiddler中找到核心会话(接口)
  3. 第三步:点击【Textview】修改需要的返回结果。
  4. 第四步:修改完成后,第二步中选项卡【Transformer】的编码格式要重新设置回去,重新压缩在发送。点击【Run to Completion】。
  5. 第五步:验证页面是否按照修改预期展示。

第一步:打抓取响应数据断点Rules -> Automatic BreakPoints -> After Response
第二步:在Fiddler中找到核心会话(接口)
image.png
第三步:点击【Textview】修改需要的返回结果。
image.png
第四步:修改完成后,第二步中选项卡【Transformer】的编码格式要重新设置回去,重新压缩在发送。点击【Run to Completion】
第五步:验证页面是否按照修改预期展示

Fiddler弱网测试

Fiddler 可以用来模拟低速网络环境,做弱网测试
原理:客户端请求、响应的数据都会通过Fiddler。因此,可以通过延迟发送数据或接收数据来限制网络的上传速度和下载速度,从而达到限速的效果。
Rules -> Performance -> Simulate Modem Speeds:模拟调制解调器的速度
自定义限速:
Rules -> Cutomize Rules 打开 CustomRules.js 文档
网速核心代码如下:
image.png
代码分析:

  1. 判断 m_SimulateModem 是否为 true,也就是是否设置了弱网模式。
  2. 如果为弱网,那么上传的网速为 300ms/KB,下载的网速为 150ms/KB
  3. 想要多快的网速,可以在这里计算并更改。

修改其中的300ms和150ms用于设置上行和下行的延迟速度。并重启Fiddler使设置生效。
比如你要模拟上传速度100KBps的网络,那上传延迟就是1KB/100KBps=0.01s=10ms,就改成10。
网络取值的算法就是 1000/速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay200毫秒来接收数据
数据传输
上行速率是指用户电脑向网络发送信息时的数据传输速率;
下行速率是指网络向用户电脑发送信息时的传输速率;
数据传输速率的单位一般采用MB/s或Mb/s
在数据传输率上官方数据中(如电信部门)一般采用Mb/s为单位。
而下载软件(如IE、迅雷、快车)一般采用MB/s为单位。
宽带最高下载理论值:1Mb/s = 0.125MB/s = 128KB/s
MB/s的含义是兆字节每秒,Mb/s的含义是兆比特每秒,前者是指每秒传输的字节数量,后者是指每秒传输的比特位数。二者是完全不同的。Byte是字节数,bit是位数,在计算机中每八位为一字节,也就是1Byte=8bit,是1:8的对应关系。因此1MB/s等于8Mb/s
计算机网络中,其网络传输速率单位用b/s(比特率每秒)表示
1Byte(字节) = 8bit(比特)
1kByte/s=8kbit/s(一般简写为1kB/s=8kb/s)
1Mb/s = 10241024 b/s = 1024 1024 /8 B/s = 128KB/s

捕获移动设备请求

1.首先设置fiddler。菜单栏Tools—》Fiddler Options
image.png
image.png
2.重启Fiddler,不重启的话手机端无法访问Fiddler服务
3.电脑和手机处于同一网络查,查看利用ipconfig查看本机IP
image.png
4.在移动设备上访问本机IP加端口号,如10.10.20.35:8888,下载安装证书
image.png
小米手机(MIUI 13) → 设置 → 安全 → 更多安全设置 → 加密与凭据 → 安装证书 → CA证书,然后选择下载到的Fiddler CA证书进行安装
5.配置手机的网络代理
打开无线网设置界面,找到【修改网络】 -> 【显示高级选项】 -> 【代理】 -> 【手动】
当前界面填写Fiddler的IP地址和端口号,点击保存,网络代理设置就配置完成了
image.png