news 2026/4/27 3:07:33

【Fiddler】脚本过滤识别模块接口过滤和标记,梳理业务影响范围实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Fiddler】脚本过滤识别模块接口过滤和标记,梳理业务影响范围实践指南

作为资深测试工程师,我来详细指导你如何使用Fiddler进行接口抓包和分析,特别是在不知道接口模块归属的情况下。

一、Fiddler基础设置

1. 安装与初始配置

1. 下载安装Fiddler Classic(免费版足够使用) 2. 首次启动需要进行HTTPS解密设置: Tools → Options → HTTPS ✓ Capture HTTPS CONNECTs ✓ Decrypt HTTPS traffic 安装证书(按提示操作) 3. 重启Fiddler生效

2. 基础过滤设置

在右侧Filters选项卡中:

1. Use Filters:勾选启用 2. Hosts区域: - No Zone Filter:默认 - No Host Filter:默认 - Hide the following Hosts:可隐藏已知的非目标域名 3. Request Headers: ✓ Hide if URL contains:可隐藏静态资源(.js,.css,.png等)

二、脚本方式过滤(重点)

1. 打开自定义脚本

点击菜单栏:Rules → Customize Rules(或按Ctrl+R)
这会打开CustomRules.js文件

2. 常用过滤脚本示例

示例1:只抓取特定端口的流量
// 在OnBeforeRequest函数中添加staticfunctionOnBeforeRequest(oSession:Session){// 只抓取80和443端口的请求if(oSession.port!=80&&oSession.port!=443){oSession["ui-hide"]="true";// 隐藏非HTTP/HTTPS请求}}
示例2:按URL关键词过滤
staticfunctionOnBeforeRequest(oSession:Session){varhideSession=false;// 隐藏静态资源varstaticExtensions=[".js",".css",".png",".jpg",".gif",".ico",".woff",".woff2"];for(vari=0;i<staticExtensions.length;i++){if(oSession.PathAndQuery.toLowerCase().indexOf(staticExtensions[i])>-1){hideSession=true;break;}}// 只显示API接口(根据常见API路径模式)varapiPatterns=["/api/","/v1/","/v2/","/rest/","/service/","/gateway/"];varisApi=false;for(vari=0;i<apiPatterns.length;i++){if(oSession.PathAndQuery.toLowerCase().indexOf(apiPatterns[i])>-1){isApi=true;break;}}if(!isApi){hideSession=true;}if(hideSession){oSession["ui-hide"]="true";}}
示例3:按响应内容类型过滤
staticfunctionOnBeforeResponse(oSession:Session){// 只显示JSON和XML响应(通常是API接口)varcontentType=oSession.oResponse["Content-Type"];if(contentType){if(!contentType.toLowerCase().contains("application/json")&&!contentType.toLowerCase().contains("application/xml")&&!contentType.toLowerCase().contains("text/xml")){oSession["ui-hide"]="true";}}}
示例4:复杂过滤逻辑 - 识别未知模块接口
// 定义一个函数来识别和分类接口staticfunctionClassifyAndFilterInterface(oSession:Session){varurl=oSession.PathAndQuery.toLowerCase();varhost=oSession.host.toLowerCase();// 模块关键词映射(可根据实际情况扩展)varmoduleKeywords={"user":["user","login","register","profile","account"],"order":["order","cart","checkout","payment"],"product":["product","item","goods","sku","inventory"],"system":["config","system","setting","log"],"content":["article","news","content","blog"]};// 检查URL是否包含模块关键词vardetectedModule="unknown";for(varmoduleinmoduleKeywords){for(vari=0;i<moduleKeywords[module].length;i++){if(url.indexOf(moduleKeywords[module][i])>-1){detectedModule=module;// 为会话添加自定义标记oSession["ui-customcolumn_module"]=module;break;}}if(detectedModule!=="unknown")break;}// 根据模块进行过滤(例如只显示特定模块)varmodulesToShow=["user","order","product"];// 只显示这些模块if(modulesToShow.indexOf(detectedModule)===-1){oSession["ui-hide"]="true";}returndetectedModule;}// 在请求时调用staticfunctionOnBeforeRequest(oSession:Session){ClassifyAndFilterInterface(oSession);}

三、高级抓包策略

1. 设置断点拦截特定请求

// 在CustomRules.js中添加staticfunctionOnBeforeRequest(oSession:Session){// 为特定接口设置断点if(oSession.uriContains("login")||oSession.uriContains("checkout")){oSession["x-breakrequest"]="keyword";// 请求时中断}}

2. 自动标记和注释

staticfunctionOnBeforeRequest(oSession:Session){// 根据接口特征自动添加注释if(oSession.uriContains("/api/v1/users")){oSession["ui-comments"]="用户模块 - 获取用户列表";}if(oSession.uriContains("/api/v1/orders")){oSession["ui-comments"]="订单模块 - 创建订单";}}

3. 批量导出接口信息

// 创建导出脚本staticfunctionExportAPIs(){varapiList=[];for(vari=0;i<FiddlerObject.UI.lvSessions.Items.Count;i++){varoSession=FiddlerObject.UI.lvSessions.Items[i].Session;if(!oSession["ui-hide"]){apiList.push({"Method":oSession.RequestMethod,"URL":oSession.fullUrl,"Module":oSession["ui-customcolumn_module"]||"unknown","Comments":oSession["ui-comments"]||""});}}// 保存为JSON文件varjsonStr=JSON.stringify(apiList,null,2);FiddlerObject.utilSaveTextFile("ExportedAPIs.json",jsonStr);}

四、实际工作流程建议

第1步:全局抓包

1. 清空现有会话(Ctrl+X) 2. 禁用所有过滤器,开始录制 3. 完整操作一遍被测系统所有功能 4. 停止录制

第2步:逐步分析过滤

1. 先用基础过滤器隐藏静态资源 2. 添加自定义脚本逐步细化过滤条件 3. 根据域名、URL模式、响应类型等特征分组

第3步:接口分类整理

1. 按功能点分组接口 2. 使用Fiddler的"Comments"功能标记接口用途 3. 导出到Postman或测试工具中

第4步:验证与确认

1. 对可疑接口进行复测验证 2. 与开发人员确认接口归属和用途 3. 建立接口清单文档

五、实用小技巧

  1. 快捷键

    • F12:开始/停止捕获
    • Ctrl+X:清空会话列表
    • Ctrl+F:查找接口
  2. 会话标记

    • 右键会话 → Mark → 选择颜色分类
    • 使用不同颜色区分不同模块
  3. 批量操作

    • Shift/Alt+多选 → 右键批量操作
    • 可批量复制URL、导出到文件等
  4. 时间线分析

    • 使用Statistics查看接口性能
    • Timeline查看请求时序关系

六、建议的工作步骤

  1. 先宽后严:开始时不设置过多过滤,先捕获所有流量
  2. 模式识别:观察请求规律,寻找URL模式
  3. 逐步过滤:从明显非API请求开始过滤
  4. 验证归类:选择代表性接口验证功能,确认所属模块
  5. 文档整理:将确认的接口整理成清单

这种方法可以帮助你在不了解系统架构的情况下,有效识别和归类接口,为后续的自动化测试打下基础。需要进一步细化哪部分内容?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 4:44:53

智慧校园管理平台解决方案综合概述与最佳实践

✅作者简介&#xff1a;合肥自友科技 &#x1f4cc;核心产品&#xff1a;智慧校园管理平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均…

作者头像 李华
网站建设 2026/4/23 14:56:00

前端第二次作业

一、要求&#xff1a;静态页面放仿写&#xff0c;任选网站进行仿写。二、仿写西京学院官网&#xff0c;代码如下&#xff1a;三、结果展示

作者头像 李华
网站建设 2026/4/18 0:44:27

YOLOv11涨点改进 | AAAI 2026 | 全网独家创新,细节涨点改进篇YOLOV11引入DIFF动态交互前馈模块,含多种改进,助力做图像恢复、目标检测、图像分割、关键点检测有效涨点

一、本文介绍 🔥本文给大家介绍使用DIFF 模块改进 YOLOv11网络模型,可在特征变换阶段实现空间维与通道维的动态交互建模,使网络能够根据内容自适应地强化目标区域特征并抑制背景干扰。相比传统卷积或 FFN 结构,DIFF 具备更强的表达灵活性和区域感知能力,有助于提升多尺度…

作者头像 李华
网站建设 2026/4/23 15:40:31

深入KCP源码:一个2000行C实现,凭什么比TCP快40%?逐行拆解ARQ算法精髓

面试官问我:“你们项目里为什么要用KCP?TCP不是已经很可靠了吗?” 我说因为我们游戏要求延迟100ms以内,TCP太慢了。他追问:"TCP慢在哪?"我说TCP有三次握手、有拥塞控制、有慢启动……说了一堆教科书上的东西。 他皱了皱眉说:“这些我知道。我问的是:KCP靠什…

作者头像 李华
网站建设 2026/4/23 14:10:14

救命!论文查重2%但AI率爆表?2025全网最全“降AI率”保姆级攻略

说实话&#xff0c;谁没经历过被那串冰冷的红色数字支配的恐惧&#xff1f; 现在大家写论文&#xff0c;为了提高效率&#xff0c;多多少少都会求助于各种大模型。当你满心欢喜地发现查重率压到了10%以内&#xff0c;结果反手一个AIGC检测&#xff0c;居然跳出个80%甚至90%的极…

作者头像 李华