news 2026/4/24 5:37:21

不只是抓包:用Fiddler在Android上‘伪造’数据,快速测试App的边界与异常场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不只是抓包:用Fiddler在Android上‘伪造’数据,快速测试App的边界与异常场景

不只是抓包:用Fiddler在Android上‘伪造’数据,快速测试App的边界与异常场景

在移动应用测试领域,大多数工程师对Fiddler的认知停留在"抓包工具"层面——它能记录HTTP/HTTPS请求,帮助分析网络交互。但鲜有人意识到,这款免费工具实则是主动测试的瑞士军刀。当你的测试需求从"观察数据流"升级到"制造特定数据流"时,Fiddler的AutoResponder和断点功能将展现出惊人的创造力。

想象这样的场景:App收到服务器返回的500错误码时界面崩溃;超长文本导致布局错乱;空数组引发闪退。传统测试需要后端配合修改接口,而掌握Fiddler的测试工程师可以独立完成全链路异常模拟。本文将揭示如何将Fiddler从被动记录器转变为主动测试武器,通过七种实战技巧覆盖90%的边界测试需求。

1. 构建主动测试环境

1.1 基础代理配置的优化方案

与常规抓包配置不同,主动测试需要更稳定的代理环境。在完成基础手机代理设置后(IP:8888),建议进行以下增强配置:

# 查看电脑IP(确保与手机同一网段) ipconfig /all | findstr "IPv4"

注意:若测试机频繁切换网络,建议使用USB网络共享,通过以下命令创建稳定的虚拟热点:netsh wlan set hostednetwork mode=allow ssid=FiddlerTest key=Test1234

在Fiddler中开启两项关键设置:

  • Rules > Customize Rules中搜索OnBeforeRequest,取消注释并修改为:
static function OnBeforeRequest(oSession: Session) { // 允许跨域请求(测试H5页面时必备) oSession.oRequest.headers.Remove("Origin"); oSession.oRequest.headers.Add("Access-Control-Allow-Origin", "*"); }
  • Tools > Options > HTTPS勾选Ignore server certificate errors时,同时启用Export Root Certificate to Desktop,将证书手动安装到测试机

1.2 会话过滤的高效方案

面对海量请求时,使用过滤器精准定位目标接口:

过滤类型语法示例适用场景
主机名过滤host:api.example.com特定域名接口测试
请求方法过滤method:POST只拦截写操作请求
内容类型过滤Content-Type:application/json精确匹配API格式
正则表达式匹配regex:(?insx)/user/\d+动态路径接口捕获

2. AutoResponder的创造性用法

2.1 构建异常响应库

在AutoResponder面板中创建以下典型测试用例:

  1. 空数据测试

    • 规则:*example.com/api/users*
    • 响应内容:
    { "data": [], "code": 200 }
  2. 超长字符串测试

    • 使用{**}匹配任意请求,响应体注入10KB垃圾数据:
    // 在FiddlerScript中定义生成函数 function generateJunkText(length) { var result = ""; for(var i=0; i<length; i++) { result += String.fromCharCode(65 + Math.random() * 25); } return result; }
  3. 混合编码测试(验证XSS防御)

    <response> <name><![CDATA[<script>alert(1)</script>测试]]></name> <value>正常值</value> </response>

2.2 动态响应进阶技巧

通过FiddlerScript实现智能响应逻辑:

// 在OnBeforeResponse中根据请求参数返回不同响应 if (oSession.uriContains("/search")) { var query = oSession.GetQueryParameter("q"); if (query == "error") { oSession.utilSetResponseBody('{"error":"人为触发的测试错误"}'); oSession.oResponse.headers.HTTPResponseCode = 500; } }

3. 断点调试的艺术

3.1 请求篡改四步法

  1. 设置全局断点:Rules > Automatic Breakpoints > Before Requests
  2. 在Inspectors面板修改关键参数:
    • 修改User-AgentMozilla/5.0 (Linux; Android 4.0.4)
    • WebForms中添加test_mode=1参数
  3. 使用Headers选项卡注入测试标记:
    X-Test-Case: boundary_test_001
  4. 点击Run to Completion观察App行为

3.2 响应延迟测试方案

模拟弱网环境时,不要简单使用Rules > Performance > Simulate Modem Speeds,而是精确控制:

// 在OnBeforeResponse中添加延迟 if (oSession.uriContains("/image/")) { oSession["response-trickle-delay"] = "3000"; // 3秒延迟 }

配合以下延迟策略矩阵使用效果更佳:

延迟策略延迟时间适用场景
基线延迟200-500ms常规操作响应测试
关键路径延迟2-3s页面加载超时处理
极端延迟10s+请求取消/重试机制验证
随机波动延迟0.5-5s真实网络环境模拟

4. 安全测试实战组合拳

4.1 敏感数据嗅探方案

通过Filters > Request Headers显示所有包含敏感关键词的请求:

  1. 创建关键字黑名单:
    password|token|auth|secret|key
  2. Customize Rules中添加告警逻辑:
    if (oSession.oRequest.headers.Exists("Authorization")) { oSession["ui-color"] = "red"; oSession["ui-bold"] = "true"; }

4.2 协议降级攻击模拟

强制将HTTPS请求降级为HTTP:

if (oSession.isHTTPS) { oSession.fullUrl = oSession.fullUrl.Replace("https://", "http://"); oSession.oRequest.headers.Add("X-Security-Test", "protocol_downgrade"); }

配合以下安全测试用例库使用:

测试类型篡改方式预期防御行为
SQL注入探测参数值改为' OR 1=1 --参数过滤或错误页面
XSS攻击测试注入<script>alert()</script>内容转义或拦截响应
越权访问测试修改user_id=123user_id=1返回403状态码
重放攻击测试重复发送相同请求体使用nonce或时间戳防御

在华为Mate 40 Pro上实测某金融App时,通过修改交易金额参数发现未做签名验证的严重漏洞。这种主动测试方式比被动抓包效率提升5倍以上。

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

乳腺癌生存预测模型开发:从数据到临床决策

1. 项目概述&#xff1a;乳腺癌患者生存概率模型开发指南在临床医学研究中&#xff0c;预测癌症患者的生存概率一直是个极具挑战性的课题。作为一名长期从事医疗数据分析的研究者&#xff0c;我发现在乳腺癌领域&#xff0c;建立一个准确的生存概率模型不仅能帮助医生制定个性化…

作者头像 李华
网站建设 2026/4/24 5:31:34

Mapshaper:地理数据处理新手的终极入门指南

Mapshaper&#xff1a;地理数据处理新手的终极入门指南 【免费下载链接】mapshaper Tools for editing Shapefile, GeoJSON, TopoJSON and CSV files 项目地址: https://gitcode.com/gh_mirrors/ma/mapshaper 还在为复杂的地理数据格式转换而烦恼吗&#xff1f;Mapshape…

作者头像 李华