헤더 재작성
Chute는 요청 및 응답 헤더를 서버나 클라이언트에 전달하기 전에 재작성할 수 있습니다.
하나의 요청에 여러 규칙이 적용될 수 있습니다.
주의: 일반 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
재작성 규칙은 URL 정규식, 작업 유형, 헤더 필드 및 값의 4부분으로 구성됩니다. 여기서는 큰따옴표 밖에서 줄 맨 앞이나 공백 뒤에 오는 //만 주석을 시작합니다. #와 ;은 결코 주석이 되지 않으므로 header-add X-Color #ff0000의 값이 유지됩니다. 주석을 참고하세요.
주의: URL 정규식은 URL 재작성과 마찬가지로 요청의 전체 URL 어느 위치에서든 일치하며, 경로만 따로 놓고도 대조됩니다.
^https://example\.com만으로 해당 호스트의 모든 경로와 쿼리 문자열이 포함되므로 끝에.*를 붙일 필요가 없으며,^/api는 경로가/api로 시작하는 모든 요청과 일치합니다. 복호화된 요청의 전체 URL은https://로 시작하므로,^http://패턴은 그런 요청과 결코 일치하지 않습니다. 패턴의 대소문자는 유지되므로\S,\D,\W,\B는 쓴 그대로의 의미를 가지며, 일치 자체는 대소문자를 구분하지 않습니다.
요청 vs 응답 헤더
header- 접두사가 붙은 작업은 요청 헤더(클라이언트에서 서버로)에 적용됩니다. header-response- 접두사가 붙은 작업은 응답 헤더(서버에서 클라이언트로)에 적용됩니다.
URL 정규식 앞에 Surge 스타일의 방향 접두사 http-request / http-response를 붙이는 형식도 허용됩니다. 예: http-request ^http://example\.com.* header-replace Accept-Language en-us.
header-add
요청 헤더의 헤더 필드를 지정된 값으로 설정합니다. 헤더 필드가 이미 존재하면 덮어쓰며, 여러 줄인 필드는 이 새 값 한 줄만 남습니다.
예:
[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
요청 헤더의 헤더 값을 교체합니다. 헤더 필드가 존재하지 않으면 아무 일도 일어나지 않습니다. 여러 줄인 필드는 새 값으로 된 한 줄만 남습니다.
예:
[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-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 접두사)는 응답 헤더에 적용됩니다.
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.