模拟响应
Chute 可以为匹配的 HTTP/HTTPS 请求返回模拟数据。对于已解密的 HTTP/2 流,模拟响应会在本地直接应答,不再转发该请求;对于 HTTP/1.1 请求(普通代理和 MitM HTTP/1.1),请求仍会被发送到真实服务器,真实响应在到达客户端之前会被替换为模拟数据。这对于测试、开发或用自定义响应阻止不需要的内容非常有用。
模拟规则定义在 [Map Local] 部分中。
每个请求只会应用一条模拟规则——即第一条 URL 模式匹配的规则。
Map Local 格式
用于从本地文件或 base64 编码内容提供模拟响应:
[Map Local]
^https://example\.com/api.* data="/path/to/mock-response.json"
^https://example\.com/page.* data="/path/to/page.html" header="SGVhZGVyOiBWYWx1ZQ=="
^https://example\.com/pixel.* base64="R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
注意:URL 正则表达式必须匹配完整的请求 URL,而不是其中的一个子串。模式通常应以
.*结尾,以匹配带有任意路径和查询字符串的 URL。
Map Local 参数
| 参数 | 说明 |
|---|---|
data="/path/to/file" |
用作响应正文的文件路径。文件在请求时读取。 |
base64="<encoded>" |
Base64 编码的响应正文内容。 |
header="<base64>" |
Base64 编码的自定义响应头部(Key:Value\n 格式)。 |
必须至少指定
data=或base64=中的一个。注意:解析
header=时会剥离所有空白字符,且每行必须严格为Key:Value形式并只包含一个冒号。值本身包含冒号的头部(例如 URL)会被静默丢弃,值内的空格也会丢失。
模板变量
使用 data= 或 base64= 时,响应正文支持模板变量替换:
| 变量 | 替换为 |
|---|---|
{{url}} |
完整的请求 URL 路径 |
{{host}} |
请求的主机名 |
{{path}} |
相对 URL 路径 |
{{method}} |
HTTP 方法 |
{{ua}} |
User-Agent 头部值 |
示例模拟响应文件(response.json):
{
"requested_url": "{{ "{{url}}" }}",
"host": "{{ "{{host}}" }}",
"method": "{{ "{{method}}" }}"
}
注意:对于 HTTPS 请求,必须为匹配的主机名启用 MitM 解密。未启用 MitM 的 HTTPS 流量的模拟规则将被忽略。
本页为英文版的翻译。如内容有出入,以英文版为准。