模拟响应
Chute 可以为匹配的 HTTP/HTTPS 请求返回模拟数据,而无需访问真实服务器。这对于测试、开发或用自定义响应阻止不需要的内容非常有用。
模拟规则定义在 [Map Local] 部分中(也支持 [Mock] 作为旧版部分名称)。
对于单个请求,可以应用多条规则。第一个 URL 模式匹配的模拟规则将被使用。
内联模拟格式
对于使用内联内容的简单模拟响应:
[Map Local]
^http://example\.com/api/status status=200 body={"ok":true}
^http://example\.com/blocked status=403
^http://ad\.com/.* status=200 body="<html></html>" content-type="text/html"
内联模拟规则包括:URL 正则表达式,以及一个或多个 key=value 响应参数。
内联参数
status:必填。
status=200
要返回的 HTTP 状态码。
body:可选。
body={"result":"mocked"}
要返回的响应正文。如果未指定,则返回空正文。
content-type:可选。
content-type=application/json
模拟响应的 Content-Type 头部。与 body 一起使用以返回正确的响应。
headers:可选。
headers=X-Custom:Value1;X-Another:Value2
额外的响应头部,以 ; 分隔。
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"
Map Local 参数
| 参数 | 说明 |
|---|---|
data="/路径/到/文件" |
用作响应正文的文件路径。文件在请求时读取。 |
base64="<编码内容>" |
Base64 编码的响应正文内容。 |
header="<base64>" |
Base64 编码的自定义响应头部(Key: Value\n 格式)。 |
必须至少指定
data=或base64=中的一个。
模板变量
使用 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 流量的模拟规则将被忽略。