Перезапись заголовков
Chute может перезаписывать заголовки запросов и ответов до их отправки на сервер или клиенту.
К одному запросу может быть применено несколько правил.
Пример:
[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, тип действия, поле заголовка и значение.
Внимание: Регулярное выражение URL должно совпадать с полным URL запроса, а не только с его подстрокой. Шаблоны обычно должны заканчиваться на
.*, чтобы совпадали URL с любым путем и строкой запроса.
Заголовки запросов и ответов
Действия с префиксом 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не нужно.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.