ヘッダー書き換え
Chuteはリクエストおよびレスポンスヘッダーを、サーバーやクライアントに転送する前に書き換えできます。
1つのリクエストに複数のルールを適用できます。
注意: 平文HTTPのリクエストが処理されるのは、ChuteのHTTPプロキシを経由して届いた場合だけです。TUNインターフェースから届いた平文HTTPは手を加えずに転送されます。Chute Androidは、設定でシステムHTTPプロキシをオンにしない限り、すべてのトラフィックをTUNに通します。このオプションは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-で始まるアクションはレスポンスヘッダー(サーバーからクライアントへ)に適用されます。
URL正規表現の前に置くSurgeスタイルの方向プレフィックスhttp-request / http-responseも任意で受け付けられます。例: http-request ^http://example\.com.* header-replace Accept-Language en-us。
header-add
リクエストヘッダーのヘッダーフィールドを指定した値に設定します。ヘッダーフィールドが既に存在する場合は上書きされ、複数行あるフィールドはこの新しい1行だけになります。
例:
[Header Rewrite]
^http://example\.com.* header-add DNT 1
Before:
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
After:
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
Before:
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
After:
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
リクエストヘッダーのヘッダー値を置き換えます。ヘッダーフィールドが存在しない場合、何も起こりません。複数行あるフィールドは、新しい値の1行だけになります。
例:
[Header Rewrite]
^http://example\.com.* header-replace DNT 1
Before:
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
After:
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プレフィックス)はレスポンスヘッダーに作用します。
本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。