news 2026/4/20 3:49:17

抓包工具Fiddler(http与fiddler)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
抓包工具Fiddler(http与fiddler)

文章目录

  • 功能测试与数据库
      • 项目与数据库的关系
  • 功能测试与抓包工具
    • HTML与HTTP 协议
      • URL
      • HTML
      • HTTP
    • HTTP请求与响应
      • 基本概念
      • HTTP请求
      • HTTP响应
  • Fiddler原理:
    • Fiddler使用
    • HTTPS请求(扩展)
  • fiddler抓包之接口基础概述
    • HTTP协议请求响应报文详解
  • fiddler弱网测试
  • fiddler模拟mock数据
  • fiddler 篡改数据

功能测试与数据库

项目与数据库的关系

  • 浏览器<—>(请求/响应)Web服务器Apache<—>(转发/响应)PHP网站框架ThinkPHP<—>(请求/响应数据)数据库MySQL

功能测试与抓包工具

  • 抓包:(package capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包经常被用来进行数据截取等。
  • 功能测试用到抓包工具的场景:
    • 通过抓包工具截取观察网站的请求信息,帮助我们更深入的了解网站
    • 通过抓包工具截取、观察网站的请求与返回信息,帮助测试进行Bug定位与描述
    • 通过抓包工具拦截修改请求信息,绕过界面的限制,测试服务端的功能
    • 通抓包工具模拟接口请求数据
  • 常用的抓包工具:Fiddler、Charles、F12开发人员工具等

HTML与HTTP 协议

  • URL:统一资源定位符
  • HTML:超文本标记语言
  • HTTP:超文本传输协议

URL

  • 示例:http://localhost/index.php?m=Home&c=Goods&a=goodsInfo&id=46
  • 格式:
    • 协议:客户端和服务器通讯的标准,http、https、ssh等
    • IP或域名
    • 端口号:协议默认的端口号是可以省略的
      • http:默认端口80
      • https:默认端口443
      • ssh:默认端口22
    • 资源路径:资源存放的位置,资源可以是各种超文本信息,如音频、视频等
    • 参数
      • 格式:用?与URL的主体部分分开
      • 参数格式参数名=参数值,有多个参数时用&拼接即可

HTML

HTML:HyperText Markup Language,超文本标记语言

  • 超文本:声音、视频、图片、超链接等
  • 标记:就是通过【<标记符>内容</标记符>】的格式让内容具有不同的表现形式,从而达到超文本的目的
    • 如:<title>百度一下,你就知道</title>
    • 互联网上浏览的网页,本质上就是超文本标记语言

HTTP

HTTP:HyperText Transfer Protocol,超文本传输协议,是互联网上最常用的协议之一

HTTP请求与响应

基本概念

  • 客户端:用户发送请求,如浏览器、APP等
  • 服务器:处理客户端请求并返回数据,如apache,nginx等
  • 请求:客户端向服务器索要数据
  • 响应:服务器处理完以后,返回给客户端的数据与信息

HTTP请求

  • 请求内容

    • 请求行:
      • 位置是在第一行
      • 请求方式、请求地址
      • 协议及版本
    • 请求头:
      • 位置是在第一行之后,到空行之前
      • 用来描述客户端信息的相关参数,一般以键值对的形式存在,如描述浏览器类型等
    • 请求体:位置是在空行之后
  • 请求方式(GET和POST)

    • get:用于查询,如搜索商品
    • post:用于提交数据,相对比较安全,如登录、注册

HTTP响应

  • 响应内容
    • 响应行:位置是在第一行,包含协议及版本、响应状态码、响应消息
    • 响应头:位置是在第一行之后,到空行之前,告诉客户端服务器相关信息,如web服务器类型等
    • 响应体:位置是在空行之后,如登陆成功
  • 响应状态码:由三位数字组成,第一位数字代表响应消息的级别
    • 2XX:成功,如200
    • 3XX:重定向,如301
    • 4XX:客户端存在问题,如404
    • 5XX:服务器端有问题,如501
  • 面试题:GET和POST的区别
    • 最直观的区别就是GET把参数包含在URL中,POST通过request body(请求体)传递参数
    • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
    • GET在浏览器回退时是无害的,而POST会再次提交请求
    • GET请求只能进行URL编码,而POST支持多种编码方式
    • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
    • GET请求在URL中传送的参数是有长度限制的,而POST没有(这个限制是由浏览器导致)
    • 多参数的数据类型,GET只接受ASCII字符,而POST没有限制
    • GET参数通过URL传递,POST放在Request body中
      ##抓包工具

Fiddler原理:

  • 请求先发送给Fiddler,Fiddler接受请求后转发给服务器
  • 服务器处理请求后将响应数据返回给Fiddler,Fiddler再转发给客户端(浏览器)

Fiddler使用

  • 菜单栏

    • rules:用于创建会话规则过滤会话,例如可以隐藏掉不常用类型的请求,如图片,304之类
    • tools:主要是工具,可在options中设置fiddler的端口号、https的请求、connection等,也可以清除cache
  • 说明备注:

  • 删除请求

    • 菜单删除
    • 命令行删除:cls、clear
    • 键盘:delete
    • 快捷键:Ctrl+X
  • 设置过滤

  1. 点击Filter页签,勾选“Use Filters”
  2. Hosts下方的第二个下拉框,选择“Show Only the following Hosts”,此过滤最常用
  3. 在下方输入框中输入要抓包的主机地址(多个地址用英文分号隔开,如:localhost;127.0.0.1)
  4. 点击右上角的“Actions”,选择“Run Filterset Now”
  5. 如果取消过滤,去掉Use Filters的勾选
  • 过滤图片、js这些,在Hide if URL contains中加入下面一行过滤图片正则代码
REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js|jpeg)(\?.*)?$

  • 设置断点
  • 自动响应
  1. 进入AutoResponder
  2. 选择列表左侧请求,点击【Add Rule】添加mock请求(或点击【Add Rule】手动填写请求地址)
  3. 选择响应结果,模拟测试场景(此处支持打开本地文件,根据文件响应数据(例如json文件)进行mock)
  4. 点击右下角【save】,保存响应设置
  5. 勾选上方选项:
    (1)Enable rules :开启禁用自动重定向功能,勾选上时,激活规则
    (2)Unmatched requests passthrough:未匹配的请求穿透,即勾选上时,不影响那些没满足我们处理条件的请求
    (3)勾选了这个选项,在规则里面就可以设置是立即返回响应,还是隔多少毫秒返回响应

HTTPS请求(扩展)

  • 抓取https需要配置,如图



fiddler抓包之接口基础概述

  • 抓到了我们想要的接口,接口请求怎么看,,我们要先知道什么是接口。

  • 接口的基本概念

    • 项目:
    • 前端:前端是肉眼所能看见的界面
    • 后端:处理数据,数据逻辑的,如淘宝铅笔一块,两块三块运算
    • 接口:提供前后端交互
    • 接口标准:
      网络协议://IP地址:port/url=页面路径?参数
      网络协议:https http
      IP地址/域名:39.167.900.145/www.baidu.com,一个ip地址可以对应多个域名
      端口号port:443,80

    HTTP协议请求响应报文详解

    抓到接口选择fiddler右边inspectors检查,看Raw里面,这里有接口的信息,看接口地址接口参数、请求方式、响应内容

    • headers:发送给请求头的信息,要关注请求类型,这个类型规定了我们发送的参数要求以这个类型发送
    • textView:参数的文本
    • Syntaxview:参数的加强版
    • webForms:显示请求的GET参数和POST body内容,特别说明,这里body是application/x-www/form/urlen-coded格式
    • HexView:用十六进制数据显示请求
    • Auth:显示header中的Proxy-Authorization和Authorization信息
    • Cookies:请求发送的cookies信息
    • Raw:将整个请求显示为纯文本
    • Json:如果请求的body是json格式,就是用分级的Json来显示它
    • XML:如果请求的body是XML格式,就是用分级的XML树来显示他
  • 响应部分内容

    • Transformer:显示响应的编码信息
    • Headers:用分级视图显示响应的header
    • TextView:使用文本显示相应的body
    • Syntaxview:为Textview的加强版,查看语法高亮的响应内容
    • ImageView:如果是请求是图片资源,显示响应的图片
    • HexView:用十六进制数据显示响应
    • WebView:响应在Web浏览器中的预览效果
    • Auth:显示响应中的Proxy-Authorization和Authorization信息
    • Cashing:显示此请求的缓存信息
    • Cookies:显示此请求的cookies信息,私密P3PHeader信息
    • Raw:将整个响应显示为纯文本
    • XML:如果响应的body是XML格式,就是用分级的XML树来显示它

fiddler弱网测试

日常进地铁上公交进电梯等,如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到app闪退、anr、数据丢失等问题

  • 网络设置:
    Rules->Performances->Simulate Moderm Speeds:模拟调制解调器的速度
  • 想要自己设置网络,可以更改网络速度
    Rules->Customize Rules(快捷键Ctrl+R)打开Fiddler ScriptEditor,接着Ctrl+F查找m_SimulateModem标志位。默认上传300ms,下载150ms。更改后继续Rules->Performances->Simulate Moderm Speeds选择速度

fiddler模拟mock数据

  • mock:mock测试就是在测试过程中,对于某些不容易构成或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法创建假数据
比如:现在有个登录下单支付的一个流程要测试。 现在开发没写完登录的接口,我没法进行后面的测试, 我就可以用mock去测试,使用fiddler模拟登录成功的接口。 怎么做:选择AutoResponser,勾选enable rules 1.创建一个文本写入你需要的数据 2.然后在选择一个接口,添加你的数据 3.save保存






fiddler 篡改数据

1、打开fiddler之后 2、对获取的请求进行挑选,选择对自己想要的那一条 3、添加断点,在fiddler下方的命令窗口,bpu URL回车,添加该请求断点成功 4、点击工具栏中Replay,点击下方出现的请求(还未返回),对webForm中的值进行修改。如下图:

对抓取到的登录接口断点测试

命令行窗口输入bpu,然后将选中的请求拖到bpu后面回车


修改用户名或密码,点击run to compl

5、点击run to comple后,出现返回JSON 6、取消断点:命令窗口输入bpu然后空格回车即可取消
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 3:47:17

TypeScript 5.2 升级引发 NestJS 构建失败的解决方案

nestjs 项目在升级 typescript 至 v5.2 后出现构建错误“false expression: import for internal module references...”&#xff0c;根源在于 ts 5.2 对命名空间声明的强制变更与 webpack&#xff08;尤其是旧版&#xff09;的类型处理逻辑冲突。 nestjs 项目在升级 typ…

作者头像 李华
网站建设 2026/4/20 3:47:17

如何快速部署AppScale GTS:开源无服务器平台的完整指南

如何快速部署AppScale GTS&#xff1a;开源无服务器平台的完整指南 【免费下载链接】gts AppScale is an easy-to-manage serverless platform for building and running scalable web and mobile applications on any infrastructure. 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/4/20 3:41:45

BluetoothKit核心组件解析:Central与Peripheral角色详解

BluetoothKit核心组件解析&#xff1a;Central与Peripheral角色详解 【免费下载链接】BluetoothKit Easily communicate between iOS/OSX devices using BLE 项目地址: https://gitcode.com/gh_mirrors/bl/BluetoothKit BluetoothKit是一款专为iOS和macOS设备设计的蓝牙…

作者头像 李华
网站建设 2026/4/20 3:39:41

终极指南:Go-MySQL-Driver内存问题全面诊断与优化技巧

终极指南&#xff1a;Go-MySQL-Driver内存问题全面诊断与优化技巧 【免费下载链接】mysql Go MySQL Driver is a MySQL driver for Gos (golang) database/sql package 项目地址: https://gitcode.com/GitHub_Trending/mys/mysql Go-MySQL-Driver作为Go语言生态中最受欢…

作者头像 李华
网站建设 2026/4/20 3:39:15

终极Grasscutter内存泄漏检测指南:工具与实用方法

终极Grasscutter内存泄漏检测指南&#xff1a;工具与实用方法 【免费下载链接】Grasscutter A server software reimplementation for a certain anime game. 项目地址: https://gitcode.com/GitHub_Trending/gr/Grasscutter Grasscutter作为一款热门的游戏服务器重构软…

作者头像 李华