news 2026/2/7 8:45:44

iOS 抓包中请求与响应拦截器,修改请求与响应数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
iOS 抓包中请求与响应拦截器,修改请求与响应数据

在调试网络问题时,有一个明显的分界点:

  • 只查看请求和响应
  • 主动修改请求和响应,观察程序行为变化

当调试目标落在第二种情况,抓包工具是否支持请求 / 响应拦截器,就成了决定效率的关键因素。


确认拦截位置,是在发送前,还是返回后

在动手写拦截逻辑之前,我会先确认一个我要干预的是请求阶段,还是响应阶段。

举两个常见的调试目标:

  • 请求发出前,替换 Header、参数或 URL
  • 响应返回后,修改字段、状态码或数据结构

这一步会直接决定拦截器是否需要同时处理 request 和 response。


代理型工具中的拦截能力

在 Charles、Fiddler 这类代理工具中,拦截通常以规则或断点形式存在。

以代理断点为例:

  • 设置 URL 匹配规则
  • 请求命中后暂停
  • 手动修改请求内容再继续发送

这种方式适合临时验证接口行为,但当需要批量、可复现的修改逻辑时,手动断点的效率会迅速下降。


脚本化拦截的必要性

当调试需求变成:

  • 每次请求都要自动改 Header
  • 特定接口返回值需要统一替换
  • 多个字段需要条件判断后再修改

就需要使用脚本型拦截器

这类拦截器有几个明确特征:

  • 请求与响应自动进入拦截逻辑
  • 修改过程可重复
  • 行为可通过日志验证

在抓包大师中启用请求 / 响应拦截器

在需要对 iOS App 网络数据做深度调试时,我会使用抓包大师(Sniff Master)的拦截器功能。

打开拦截器日志界面

  • 进入代理抓包界面
  • 双击右侧插件形状的拦截器图标
  • 打开拦截器日志窗口

在这个界面中,可以直接看到:

  • 拦截功能是否启用
  • 当前拦截日志是否产生

日志是否出现,是判断拦截是否生效的直接依据。


进入拦截器编辑器,理解代码结构

在拦截器日志界面中,点击「编辑拦截器」,会进入代码编辑窗口。

拦截器使用 JavaScript 编写,整体结构固定,由三个函数组成:

function handleRequest(request) { return request } function handleResponse(response) { return response } function filterUrl() { return [] }

这段代码本身不会拦截任何请求,它的作用是提供一个完整但空行为的框架


拦截范围由 filterUrl 决定

filterUrl()返回的是一个 URL 规则数组。

例如:

function filterUrl() { return ["https://api.example.com/*"] }

只有命中该规则的请求,才会进入handleRequesthandleResponse
如果这里返回空数组,拦截器不会对任何请求生效。


在请求阶段修改数据

handleRequest(request)接收到的是即将发送给服务器的数据

request 对象中可直接访问:

  • request.URL
  • request.Header
  • request.Body
  • request.IsBase64Body

例如,替换请求 Header 中的某个字段:

function handleRequest(request) { request.Header["token"] = "debug-token" return request }

修改完成后返回 request,对服务器而言,这就是最终收到的请求。


在响应阶段修改返回结果

handleResponse(response)接收的是服务器返回的数据。

response 中除了 URL、Header、Body,还包含:

  • response.StatusCode

例如,修改响应内容以验证客户端逻辑:

function handleResponse(response) { response.Body = '{"code":0,"data":"mock"}' return response }

客户端接收到的就是被替换后的响应内容。


拦截器是否生效,用日志验证

在调试过程中,我会在拦截函数中加入日志输出:

console.log("拦截请求:" + request.URL);

如果日志窗口中出现对应输出,说明:

  • URL 匹配成功
  • 拦截逻辑被执行
  • 修改行为真实生效

这是比“界面有没有变化”更可靠的判断方式。


多工具协同的使用方式

在实际工程中,拦截器很少单独使用:

  • 用 Wireshark 判断是否建立连接
  • 用代理工具确认请求路径
  • 用 抓包大师(Sniff Master)拦截并修改数据

每个工具解决的都是不同层级的问题,拦截器负责的是数据层面的验证和控制

参考链接:https://www.sniffmaster.net/tutorial/zh/6/6.html

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

一文读懂 HDMI 矩阵:分类、特性、场景全攻略,告别信号切换难题

从高等数学线性代数的矩阵概念延伸来看,信号传输领域中的矩阵,通常指在多路输入场景下具备多路输出选择功能的结构模式,形成类似矩阵的信号分配架构。其核心特性为:每一路输出可单独与任意一路输入信号建立连接(即“短…

作者头像 李华
网站建设 2026/2/5 20:30:05

多文件C程序编译与Makefile管理完整指南

文章目录 多文件C程序编译与Makefile管理完整指南 1. 项目概述 2. 项目文件结构 2.1 文件组织架构 2.2 各文件详细说明 math.h - 数学模块头文件 math.c - 数学模块实现 utils.h - 工具模块头文件 utils.c - 工具模块实现 main.c - 主程序 3. 文件关联关系详解 3.1 模块化设计架…

作者头像 李华
网站建设 2026/2/6 0:20:10

大模型入门必看:Embedding技术原理与实战详解

本文详细介绍了Embedding技术,它是将文字、图片等复杂事物转化为数字向量的方法,使计算机能理解事物间的关系。文章讲解了Embedding的四步训练过程、相似度计算方法(特别是余弦相似度)以及向量数据库的应用。通过实例展示了Embedd…

作者头像 李华
网站建设 2026/2/6 17:10:01

工业AI转型的先锋力量:2026年全球工业AI公司综合实力TOP 5榜单揭晓

在人工智能技术加速演进的今天,各行各业都在积极探索数字化转型的路径,而制造业作为国民经济的支柱,自然成为这场技术革命的主战场。2026年,随着工业AI从概念走向实践,一场围绕技术、场景与效率的全面变革正在悄然发生…

作者头像 李华
网站建设 2026/2/5 23:12:07

数据采集终端哪个好用?有哪些推荐?

在工业自动化、环境监测、物流管理等场景中,数据采集终端作为连接物理世界与数字系统的桥梁,其性能直接影响数据处理的效率与决策的精准度。然而,面对市场上琳琅满目的品牌与型号,用户往往陷入选择困境:究竟哪款产品能…

作者头像 李华