본문 재작성

Chute는 정규식 또는 JSONPath 표현식을 사용하여 HTTP 요청 및 응답 본문의 내용을 검색하고 교체할 수 있습니다. HTTPS 트래픽의 경우 MitM 복호화가 필요합니다.

본문 재작성 규칙은 [Body Rewrite] 섹션에 정의됩니다. 하나의 요청에 여러 규칙을 적용할 수 있습니다.

[Body Rewrite]
^https://api\.example\.com/response response regex "old-text" "new-text"
^https://api\.example\.com/request request regex "sensitive" "[redacted]"
^https://api\.example\.com/data jsonpath-response jsonpath $.ads null

규칙 형식

각 규칙은 다음과 같은 일반 형식을 따릅니다:

<URL regex> [direction] <mode> <pattern> <replacement>

방향

키워드 설명
response 응답 본문에 적용 (생략 시 기본값)
request 요청 본문에 적용

모드

모드 설명
regex 정규식 검색 및 교체
jsonpath-response / jsonpath-request / body-jsonpath-response / body-jsonpath-request JSONPath 기반 수정

정규식 모드

디코딩된 본문 텍스트에 대해 표준 정규식 찾기 및 바꾸기를 수행합니다. 대소문자를 구분하지 않는 매칭으로 NSRegularExpression(ICU)을 사용합니다. 교체 문자열은 캡처 그룹 참조($1, $2 등)를 지원합니다.

<URL regex> [response|request] regex <pattern> <replacement>

예 — JSON 응답에서 광고 제거:

[Body Rewrite]
^https://api\.example\.com/feed response regex "\"ads\":\s*\[.*?\]" "\"ads\":[]"

예 — 요청 본문 정리:

[Body Rewrite]
^https://api\.example\.com/submit request regex "\"password\":\s*\".*?\"" "\"password\":\"[FILTERED]\""

예 — 캡처 그룹을 사용하여 데이터 재형식화:

[Body Rewrite]
// "last, first"를 "first last"로 변환
^https://api\.example\.com/users response regex "\"name\":\s*\"(\\w+),\\s*(\\w+)\"" "\"name\":\"$2 $1\""

예 — 응답 본문의 임베디드 URL 재작성:

[Body Rewrite]
^https://api\.example\.com response regex "https://old-cdn\\.example\\.com" "https://new-cdn.example.com"

공백이 포함된 토큰은 큰따옴표로 묶어야 합니다:

[Body Rewrite]
^https://example\.com response regex "old value with spaces" "new value"

따옴표로 묶인 토큰 안에 리터럴 큰따옴표를 포함하려면 백슬래시로 이스케이프합니다: \".


JSONPath 모드

JSONPath 표현식을 사용하여 JSON 본문을 수정합니다. 특정 경로에서 값 읽기, 설정 및 삭제를 지원합니다.

<URL regex> jsonpath-response|jsonpath-request jsonpath <jsonpath-expression> [value]

지원되는 JSONPath 구문

표현식 설명
$.key 객체 속성 접근
$.key.subkey 중첩 속성 접근
$[0] 인덱스로 배열 요소 접근
$.key[0].subkey 객체와 배열 혼합 접근
$.items[*].name 와일드카드: 배열의 모든 항목
$.*.value 와일드카드: 모든 속성

값 유형

결과
"string" 문자열 값으로 설정
42 정수로 설정
3.14 실수로 설정
true 불리언 true로 설정
false 불리언 false로 설정
null 또는 생략 경로 삭제

예 — JSON 필드 설정:

[Body Rewrite]
^https://api\.example\.com/profile jsonpath-response jsonpath $.user.name "Anonymous"

예 — JSON 필드 삭제:

[Body Rewrite]
^https://api\.example\.com/data jsonpath-response jsonpath $.tracking null

예 — 와일드카드 수정:

[Body Rewrite]
^https://api\.example\.com/list jsonpath-response jsonpath $.items[*].hidden true

실용 예제

JSON 응답에서 추적 매개변수 제거

모든 API 응답에서 trackingIdsessionId 필드를 제거합니다:

[Body Rewrite]
^https://api\.example\.com/ jsonpath-response jsonpath $.trackingId null
^https://api\.example\.com/ jsonpath-response jsonpath $.sessionId null

HTML 응답에 스크립트 태그 삽입

모든 HTML 페이지에서 </body> 앞에 사용자 정의 <script> 태그를 추가합니다:

[Body Rewrite]
^https://www\.example\.com/ response regex "</body>" "<script>console.log('injected')</script></body>"

요청 로그에서 민감한 필드 마스킹

서버에 도달하기 전에 나가는 요청 본문에서 API 키와 토큰을 교체합니다:

[Body Rewrite]
^https://api\.example\.com/ request regex "\"apiKey\":\s*\"[^\"]+\"" "\"apiKey\":\"[REDACTED]\""
^https://api\.example\.com/ request regex "\"token\":\s*\"[^\"]+\"" "\"token\":\"[REDACTED]\""

응답에서 날짜 형식 정규화

ISO 날짜를 더 짧은 형식으로 교체합니다:

[Body Rewrite]
^https://api\.example\.com/ response regex "(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z" "$1/$2/$3 $4:$5"

앱 설정에서 기능 플래그 비활성화

설정 엔드포인트에서 모든 기능 플래그를 false로 강제 설정합니다:

[Body Rewrite]
^https://api\.example\.com/config jsonpath-response jsonpath $.features[*].enabled false

캐시된 응답에서 CDN URL 재작성

이전 CDN에 대한 모든 참조를 새 CDN으로 교체합니다:

[Body Rewrite]
^https://www\.example\.com/ response regex "https://old-cdn\.example\.com" "https://new-cdn.example.com"

처리 파이프라인

본문 재작성은 다음을 자동으로 처리합니다:

  1. Content-Encoding: gzipdeflate를 지원합니다. 지원되지 않는 인코딩은 건너뜁니다.
  2. Transfer-Encoding: 처리 전에 청크 전송 인코딩을 디청킹합니다.
  3. 디코딩: 재작성 규칙을 적용하기 전에 본문의 압축을 해제합니다.
  4. 재인코딩: 본문을 다시 압축하고 Content-Length를 업데이트합니다. Transfer-Encoding 헤더를 제거합니다.

재작성 처리를 위한 최대 본문 크기는 기본적으로 128KB입니다. 이보다 큰 본문은 수정 없이 통과됩니다.


참고

  • HTTPS 트래픽의 경우, 일치하는 호스트명에 대해 MitM 복호화가 활성화되어야 합니다.
  • 정규식 매칭은 대소문자를 구분하지 않습니다. 교체 템플릿은 ICU 캡처 그룹 참조를 지원합니다: $0(전체 일치), $1(첫 번째 그룹), $2(두 번째 그룹) 등.
  • JSONPath 모드는 본문이 유효한 JSON인 경우에만 적용됩니다.
  • 본문 재작성 규칙은 디코딩된(UTF-8) 본문 텍스트에 적용됩니다.
  • 여러 규칙이 동일한 요청/응답에 일치하여 적용될 수 있습니다(정의된 순서대로 적용됨).
  • 규칙이 JSONPath를 통해 존재하지 않는 값을 설정하거나 삭제하면 본문은 변경되지 않습니다.
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-06-28 02:09:17

results matching ""

    No results matching ""