动态变量

在规则的取值字段里用 {{变量}} 占位符引用内置动态变量(时间戳、随机数、UUID 等),无需每次手填。

支持的字段

动态变量只在「取值」类字段里解析,命中条件(URL / 请求方法 / 请求体匹配)不参与解析:

字段 通道 解析时机
重定向目标地址 网络层(DNR) 规则同步时解析一次
注入参数的值 网络层(DNR) 规则同步时解析一次
Header 改写的值 网络层(DNR) 规则同步时解析一次
静态 Mock 响应体、响应头的值 页面补丁 逐请求解析
静态改请求体的内容 页面补丁 逐请求解析

Mock 与改请求体切到「JavaScript 动态生成」模式后,由你的代码自行产出值,占位符不再需要,因此那两种模式下不解析动态变量。

内置变量

占位符 说明 示例输出
{{uuid}} 随机 UUID v4 3f9a1c7e-9b2d-4e1a-8c7f-2b6d0a5e4c31
{{timestamp}} 当前秒级 Unix 时间戳 1753228800
{{timestampMs}} 当前毫秒级 Unix 时间戳 1753228800123
{{isoTime}} 当前时间的 ISO 8601 字符串 2026-07-23T00:00:00.000Z
{{randomFloat}} [0, 1) 区间的随机浮点数 0.6273481902
{{randomInt(min,max)}} 闭区间 [min, max] 内的随机整数,缺省 0-100 42
{{randomString(length)}} 指定长度的随机字母数字串,缺省 8 位 a1B2c3D4

带参数的变量写成函数调用形式,参数之间用逗号分隔,允许空白:{{ randomInt(1, 100) }} 与 {{randomInt(1,100)}} 等价。

  • 未识别的占位符(拼写错误,或页面自身的其他模板语法)会原样保留,不会被清空。
  • 变量可与普通文本、正则捕获组混用,例如重定向到 https://example.com/target?nonce={{uuid}}。

两条通道的解析时机差异(重要)

  • 页面补丁通道(静态 Mock / 静态改请求体)在每个请求发出时重新求值,因此每个请求都能拿到不同的 {{uuid}}、实时的 {{timestamp}}——这才是「真·动态」。
  • 网络层(DNR)通道(重定向 / 注入参数 / Header 改写)由浏览器网络层以声明式规则原生执行,无法逐请求求值。动态变量在规则同步时(保存规则、切换开关、作用域标签变化触发重算等)解析一次,同一次同步内命中的所有请求会拿到相同的值。若需要每个请求都不同的值,请改用页面补丁通道的 Mock / 改请求体。

示例

给所有 API 请求注入一个防重放的随机 nonce 与时间戳(网络层,注入参数):

  • 匹配方式:wildcard,匹配模式:https://api.example.com/*
  • 注入参数:{ "nonce": "{{uuid}}", "ts": "{{timestamp}}" }

为静态 Mock 返回带唯一 ID 的响应(页面补丁,逐请求不同):

{
  "id": "{{uuid}}",
  "createdAt": "{{isoTime}}",
  "score": {{randomInt(1,100)}}
}