URL 재작성

Chute는 다양한 방법으로 요청의 URL을 재작성하거나 URL로 특정 요청을 거부할 수 있습니다.

하나의 요청에는 하나의 규칙만 적용될 수 있습니다.

주의: 일반 HTTP 요청은 Chute의 HTTP 프록시를 거쳐 들어올 때만 처리됩니다. TUN 인터페이스를 거쳐 들어오는 일반 HTTP는 손대지 않고 그대로 전달됩니다. Chute Android는 설정에서 시스템 HTTP 프록시를 켜지 않는 한 모든 트래픽을 TUN으로 보냅니다. 이 옵션을 켜면 앱에 Chute의 HTTP 프록시가 주어집니다(Android 10 이상, 기본값은 꺼짐). HTTPS 요청은 그 호스트가 MitM으로 복호화될 때만 처리됩니다.

예:

[URL Rewrite]
^http://www\.google\.cn http://www.google.com header
^http://amazon\.cn https://z.cn 302
^http://ad\.com/ad\.png _ reject
^http://tracker\.com/event _ reject-200
^http://ad\.com/pixel _ reject-img
^http://api\.example\.com/block _ reject-dict
^http://api\.example\.com/list _ reject-array
^http://ad\.com/beacon _ reject-tinygif

재작성 규칙은 정규식, 대체 URL 및 유형의 3부분으로 구성됩니다. 각 부분은 공백으로 구분되며, #, ;, //로 시작하는 첫 단어부터 줄 끝까지가 주석이 됩니다. 이 섹션에는 따옴표 처리가 없습니다. 주석을 참고하세요.

거부 유형(reject, reject-200, reject-img, reject-dict, reject-array, reject-tinygif)의 경우, _ 자리 표시자 없이 <pattern> reject 형태의 2토큰 축약형도 허용됩니다. 축약형은 Shadowrocket의 reject-drop과 reject-no-drop(둘 다 reject로 응답)과 reject-video(reject-200으로 응답)도 받아들입니다. 이 세 가지는 축약형에서만 허용되며, 3토큰 줄의 유형으로는 쓸 수 없습니다. 두 번째 토큰이 reject 키워드가 아닌 2토큰 줄은 그 URL로의 header 모드 재작성으로 읽힙니다: ^http://a\.com http://b.com은 ^http://a\.com http://b.com header와 같습니다. reject 키워드의 철자에 유의하세요 — reject200은 키워드가 아니므로 ^http://ad\.com reject200은 reject200으로의 header 모드 재작성으로 읽힙니다. 그 대체 값은 절대 URL도 절대 경로도 아니므로 요청 시점에 재작성이 로그의 경고와 함께 거부되고 요청은 그대로 전달됩니다. 거부되지도, 재작성되지도 않는 셈입니다.

Chute가 직접 만드는 응답 — Map Local, 스크립트의 response, URL 재작성과 REJECT 계열 정책의 응답과 오류 페이지 — 은 HTTP를 따릅니다: HEAD 요청에 대한 응답은 헤더뿐이며 Content-Length는 GET일 때와 같고, 상태가 204, 205 또는 304인 응답에는 본문도 Content-Length도 없습니다.

헤더 모드

Chute는 요청 헤더를 수정하고 필요한 경우 요청을 다른 호스트로 리디렉션합니다. 클라이언트는 이 재작성 작업을 감지하지 못합니다. (이 모드는 Surge의 "Map Remote"에 해당합니다.)

요청 헤더의 "Host" 필드는 새 URL과 일치하도록 수정됩니다.

[URL Rewrite]
^http://www\.google\.cn http://www.google.com header

대체 URL은 /new/path와 같은 경로 전용 형태일 수도 있습니다. 이 경우 요청 줄만 새 경로로 재작성되며, 요청은 여전히 동일한 호스트로 전송됩니다. 스킴과 ://로 시작하는 대체 값만 URL로 읽히므로, /go?to=http://example.com/처럼 쿼리 문자열에 URL을 담은 경로도 여전히 경로 전용 대체입니다.

대상을 제자리에서 재작성할 수 없는 경우 — 예를 들어 일반 HTTP 요청을 https:// URL로 재작성하거나, (MitM이 활성화된) HTTPS 요청을 다른 출처(origin)로 재작성하거나, 이미 맺어진 일반 HTTP keep-alive 연결의 후속 요청이 다른 호스트를 지정한 규칙에 일치하는 경우 — Chute는 투명한 헤더 재작성 대신 클라이언트에 새 URL로의 307 리디렉션으로 응답하는 방식으로 자동 폴백합니다.

302 모드

Chute는 단순히 302 리디렉션 응답을 반환합니다. 호스트명에 대한 MitM이 활성화된 경우 HTTPS 요청도 리디렉션할 수 있습니다.

[URL Rewrite]
^http://amazon\.cn https://z.cn 302

307 모드

Chute는 단순히 307 임시 리디렉션 응답을 반환합니다. 호스트명에 대한 MitM이 활성화된 경우 HTTPS 요청도 리디렉션할 수 있습니다.

[URL Rewrite]
^http://amazon\.cn https://z.cn 307

거부 모드

패턴이 일치하면 요청을 거부합니다. 대체 매개변수는 무시됩니다. HTTP 503 응답을 반환합니다. 호스트명에 대한 MitM이 활성화된 경우 HTTPS 요청도 거부됩니다.

[URL Rewrite]
^http://ad\.com/ad\.png _ reject

Reject-200 모드

HTTP 200 OK 상태와 길이가 0인 본문으로 요청을 거부합니다. 오류 처리를 트리거하지 않고 추적 요청을 조용히 차단하는 데 유용합니다.

[URL Rewrite]
^http://tracker\.com/event _ reject-200

Reject-Img 모드

1x1 흰색 GIF 이미지(HTTP 200 OK)를 반환하여 요청을 거부합니다. 깨진 이미지 자리 표시자를 유발하지 않고 광고 이미지를 차단하는 데 유용합니다.

[URL Rewrite]
^http://ad\.com/pixel _ reject-img

Reject-Dict 모드

빈 JSON 객체 {}(HTTP 200 OK)를 반환하여 요청을 거부합니다. JSON 응답을 기대하는 API 호출을 차단하는 데 유용합니다.

[URL Rewrite]
^http://api\.example\.com/block _ reject-dict

Reject-Array 모드

빈 JSON 배열 [](HTTP 200 OK)를 반환하여 요청을 거부합니다. 목록을 기대하는 API 호출을 차단하는 데 유용합니다.

[URL Rewrite]
^http://api\.example\.com/list _ reject-array

Reject-TinyGIF 모드

1×1 GIF 이미지(HTTP 200 OK)를 반환하여 요청을 거부합니다. reject-img와 같은 응답을 Surge식으로 쓴 것입니다.

[URL Rewrite]
^http://ad\.com/beacon _ reject-tinygif
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.

results matching ""

    No results matching ""