NetPeek NetPeek

iOS 改包与接口 Mock:重写 HTTP 请求和响应

NetPeek 的重写规则由“生效条件”和“执行动作”组成,可在不修改 App 代码的情况下改 Header、替换 Body、Mock 响应、拦截请求、重定向或用本地文件返回内容。

3重写规则(简单模式)

重写 = 不改代码就改包:加请求头、替换响应字段、Mock 接口、拦广告、重定向。一条规则 =「什么时候生效(条件)」+「做什么(动作)」。新手用简单模式,点几下即可。

  1. 最近请求左滑选「新建重写」(自动预填域名/路径),或到重写列表点 +
  2. 什么时候生效:选「所有请求」或加条件(域名包含 / 路径开头是 …)。
  3. 你想做什么:六张意图卡片任选其一。
  4. 改成什么:按意图填字段。下方实时显示一句人话摘要,确认无误点保存并启用
意图用途
改 Header给请求/响应加、改、删一个头
改 Body把响应/请求正文里的一段文本替换掉
Mock 响应不发真实请求,直接返回自定义内容
拦截请求返回空响应 / 空 JSON / 空图片,常用于屏蔽广告埋点
重定向把请求跳到另一个 URL(如线上→测试)
本地文件用设备上的文件内容作为响应返回
新建一条重写 打开重写列表
多条件之间是「并且」。需要「或者」时,再建一条同样动作的规则即可。想做更复杂的组合(多动作、括号、正则),点编辑页右上角切到专家模式

4重写规则 · 专家语法(DSL)

专家模式直接写规则语句,能力最全。动作里第一个符号(^ 替换、~ 删除、@ 开头的整体动作)决定「做什么」,后面 @req.*/@rsp.* 决定「对哪里」,引号里是值。

务必使用英文半角引号 ";中文全角引号 「」 会使规则静默失效。

条件对象

对象含义示例
@req.host请求域名@req.host CONTAINS "example.com"
@req.api请求路径@req.api BEGINSWITH "/api/v1"
@req.url完整链接@req.url MATCHES ".*\.jpg(\?.*)?$"
@req.query查询字符串@req.query CONTAINS "debug=1"
@req.method请求方法@req.method == "POST"
@req.port / @req.schema端口 / 协议@req.schema == "http"
@req.header["名"]请求头@req.header["Content-Type"] CONTAINS "json"
@req.bodyText请求正文@req.bodyText CONTAINS "vip"
@rsp.header["名"]响应头@rsp.header["Content-Type"] CONTAINS "json"
@rsp.bodyText响应正文@rsp.bodyText CONTAINS "false"
@rsp.status / @rsp.statusLine状态码 / 状态行@rsp.status == "404"

比较与逻辑

比较:== != > < >= <= CONTAINS BEGINSWITH ENDSWITH LIKE(通配 */?) MATCHES(正则,整体匹配) IN ANY/ALL/NONE。逻辑:&&(并且) ||(或者) !(取反),可用 () 分组。

执行动作

动作说明示例
^替换/插入^@req.header["X-Debug"] "1"
~删除~@req.header["Authorization"]
@mock直接返回自定义响应@mock "{\"ok\":true}"
@reject*返回空内容(空/空图/空对象/空数组)@reject-array
@redirect重定向(可带 @301@308)@redirect 307 "https://test/x"
@map-local用本地文件当响应@map-local "/共享目录/mock.json"
@break中断请求@break

给某接口加调试头并把响应字段改成 true

条件:@req.host CONTAINS "api.example.com" && @req.api BEGINSWITH "/feature"
动作1:^@req.header["X-Debug"] "1"
动作2:^@rsp.bodyText "\"enabled\":false" "\"enabled\":true"

常见问题

重写规则什么时候生效?

规则需要保存并启用,全局 Rewrite 开关也必须开启;验证时请重新发起请求。

不会写 DSL 可以改包吗?

可以。简单模式用条件和意图卡片生成规则;专家模式保留 DSL 供复杂逻辑使用。

能直接返回 Mock 响应吗?

可以。Mock 响应动作可跳过真实请求并返回自定义内容,Map Local 则可用设备上的文件作为响应。

继续了解