欢迎来到小熊博客

test_software

导航

fiddler工具使用详细总结

Fiddler简介

Fiddler是位于客户端和服务器端的HTTP代理
目前最常用的http抓包工具之一
功能非常强大,是web调试的利器

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

场景使用场景

  • 接口调试、接口测试、线上环境调试、web性能分析
  • 判断前后端bug、开发环境hosts配置、mock、弱网断网测试

 

 

B/S架构

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

 

 

工作原理

 

 

HTTP

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

 

 

完整的HTTP协议

完整的http协议包含请求和响应两块内容

 

 

HTTP请求报文

HTTP请求报文主要由请求行、请求头部、空一行、请求正文(请求体)4部分组成

 

 如下是fiddler某个会话的请求报文

 

 

请求方法( 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:发送的参数

如:https://www.baidu.com/s?wd=柠檬班

 

请求头(Request Header)

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



HTTP响应报文

HTTP响应报文主要由状态行、消息报头、空一行、响应正文4部分组成

 

 如下是fiddler某个会话的响应报文

 

 

状态码(Status Code)

用以表示网页服务器HTTP响应状态的3位数字代码

状态码描述
1XX 提示信息,请求被成功接收
2XX 成功,请求被成功处理 200
3XX 重定向相关 304
4XX 客户端错误 404
5XX 服务器端错误 500

响应头(Response Header)

响应头描述
Server HTTP服务器的软件信息
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的情况



GET请求

格式http://host:port/path?xx=aa&yy=bb
如:http://120.78.128.25/futureloan/mvc/api/member/register?mobilephone=13555555528&pwd=123456
说明:

  • http/https:协议类型
  • host:服务器主机ip地址或域名
  • port:端口号,如果是80可以省略,其它端口必须指明
  • path:访问资源的路径
  • ?:分隔符,用于区别path和参数
  • xx=aa、yy=bb:请求参数列表
  • &:多个参数的连接符号

Fiddler概览

 

界面详解

 

 

 

 

Session List(会话列表)

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

 

 

 

 

 

Statistics(统计)

HTTP请求的性能和其他数据分析,如DNS解析的时间,建立TCP/IP连接的时间消耗等信息

 

 

Inspectors(检查器)

Inspectors意思是检查器

可以多种方式查看请求的请求报文和响应报文相关信息

AutoResponder(自动响应器)

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

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

 

 

Filters(过滤器)

多维度的过滤规则,可根据主机、进程、请求头、响应头、状态码、响应类型和大小、断点进行请求的过滤

 

 

HTTPS抓包

  • 点击Tools > Fiddler Options > HTTPS
  • 勾选Decrypt HTTPS Traffic

 

 

 

 

 

 

 

 

 

 

捕获Firefox HTTPS的包

导出Fiddler根证书

  • Tools > Fiddler Options > HTTPS
  • Actions > Export Root Certificate toDesktop将Fiddler根证书导出到桌面

 

 

捕获Firefox HTTPS的包

Firefox导入根证书

  • 打开Firefox浏览器
  • 击打开菜单 > 选项 > 高级 > 证书 > 查看证书
  • 点击导入 > 选择桌面的Fiddler根证书 > 打开

 

 

 

 

抓不到HTTPS解决方案1

  • 关闭Fiddler和Firefox
  • 运行命令certmgr.msc,打开系统的证书管理器(Fiddler的https配置选项卡中的Actions也可打开)
  • 点击操作 > 查找证书 > 输入Fiddler进行查找 > 选中所有查找到的证书 > 删除
  • 重复步骤配置Firefox浏览器抓取HTTPS包
  • 重新测试,大部分情况可以抓取HTTPS包了



 

 

 

 

抓不到HTTPS解决方案2

清除系统安装的Fiddler根证书

  • 运行命令certmgr.msc,打开系统证书管理
  • 点击操作 > 查找证书 > 输入"Fiddler"进行查找 > 选中所有查找到的证书 > 删除

清除Firefox中Fiddler根证书

  • 打开Firefox浏览器
  • 点击打开菜单 > 选项 > 高级 > 证书 > 查看证书
  • 找到并各项中的DO_NOT_TRUST_FiddlerRoot证书

下载并安装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设备抓包-iOS设备设置

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



 

 

iOS设备抓包-安装证书解密HTTPS

  • 在iOS设备打开浏览器,访问 http://ipv4:8888/
  • 点击Fiddler Echo Service页面底部FiddlerRoot certificate下载证书

 

 

  • 打开FiddlerRoot.cer 文件并安装
  • 安装成功后,在通用 > 关于本机 > 证书信任设置中,信任刚安装的Fiddler证书
  • Safari打开https://www.baidu.com,已经可以抓取HTTPS包了

Android设备抓包

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

 

posted on 2022-08-28 23:08  灰太熊  阅读(193)  评论(0编辑  收藏  举报