Перезапись заголовков

Chute может перезаписывать заголовки запросов и ответов до их отправки на сервер или клиенту.

К одному запросу может быть применено несколько правил.

Внимание: Обычный HTTP-запрос обрабатывается, только если он приходит в Chute через его HTTP-прокси; обычный HTTP, пришедший через интерфейс TUN, пересылается без изменений. Chute Android направляет весь трафик через TUN, если в настройках не включён Системный HTTP-прокси, который предоставляет приложениям HTTP-прокси Chute (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 Regex сопоставляется с любым местом полного 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-29 21:57:05

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""