Header 重写

Chute 可以在请求和响应头部被转发到服务器或客户端之前对其进行重写。

对于单个请求,可以应用多条规则。

注意:明文 HTTP 请求只有经由 Chute 的 HTTP 代理到达时才会被处理;经 TUN 接口到达的明文 HTTP 会被原样转发。Chute Android 让所有流量都经过 TUN,除非在设置中打开了系统 HTTP 代理,它会把 Chute 的 HTTP 代理交给应用使用(Android 10 及以上;默认关闭)。HTTPS 请求只有在其主机经 MitM 解密时才会被处理。

示例:

[Header Rewrite]
^http://example\.com.* header-add DNT 1
^http://example\.com.* header-del Cookie
^http://example\.com.* header-replace User-Agent Unknown
^http://example\.com.* header-response-add X-Server rack3
^http://example\.com.* header-response-del X-Powered-By
^http://example\.com.* header-response-replace Server nginx

重写规则由 4 个部分组成:URL 正则表达式、操作类型、头部字段和值。在这里,只有位于行首或紧跟在空格后面、且不在双引号内的 // 才会开启注释;# 和 ; 从不算注释,所以 header-add X-Color #ff0000 会保留其值。见注释。

注意:URL 正则表达式会在请求完整 URL 的任意位置匹配,也会单独拿路径去匹配(与 URL 重写相同):^https://example\.com 已覆盖该主机下的所有路径和查询字符串,无需在结尾加 .*,^/api 则会匹配路径以 /api 开头的每一个请求。已解密请求的完整 URL 以 https:// 开头,所以 ^http:// 模式永远匹配不到这类请求。模式会保留原本的大小写,因此 \S、\D、\W、\B 的含义不会被改变;匹配本身不区分大小写。

请求与响应头部

前缀为 header- 的操作应用于请求头部(从客户端到服务器)。前缀为 header-response- 的操作应用于响应头部(从服务器到客户端)。

也接受 Surge 风格的方向前缀 http-request / http-response,写在 URL 正则表达式之前,例如 http-request ^http://example\.com.* header-replace Accept-Language en-us。

header-add

将请求头部中的某个头部字段设置为给定的值。如果该头部字段已存在,则会被覆盖;有多行的字段只剩下这一行新值。

示例:

[Header Rewrite]
^http://example\.com.* header-add DNT 1

修改前:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate

修改后:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1

header-del

从请求头部中删除一个头部字段;字段有多行时,所有行一并删除。

示例:

[Header Rewrite]
^http://example\.com.* header-del DNT

修改前:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1

修改后:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate

header-replace

替换请求头部中的头部值。如果该头部字段不存在,则不会发生任何操作。有多行的字段只剩下一行,值为新值。

示例:

[Header Rewrite]
^http://example\.com.* header-replace DNT 1

修改前:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 0

修改后:
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1

注意:header-replace 仅在头部字段已存在时生效。要在无论该字段是否存在的情况下设置头部字段,请使用 header-add——它会覆盖任何同名的已有字段,因此无需再组合使用 header-del 和 header-add。


header-replace-regex

用正则表达式改写已有头部值的一部分。规则依次写头部字段、作用于其值的正则表达式和替换内容,替换内容可以用 $1、$2 引用捕获组。头部字段不存在时不做任何事。正则表达式或替换内容含空格时用双引号括起来;"" 表示替换为空。

示例:

[Header Rewrite]
^https://example\.com header-replace-regex User-Agent "Chrome/[0-9.]+" Chrome/120.0.0.0
^https://example\.com header-response-replace-regex Set-Cookie "; Secure" ""

作用于头部值的正则表达式区分大小写。有多行的字段(例如响应里的多行 Set-Cookie)会逐行改写,所有行都保留。与其他动作一样,header-response-replace-regex(或 http-response 前缀)作用于响应头。

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-25 00:02:29

本页为英文版的翻译。如内容有出入,以英文版为准。

results matching ""

    No results matching ""