Body Rewrite

Chute สามารถค้นหาและแทนที่เนื้อหาในเนื้อหาคำขอและการตอบกลับ HTTP โดยใช้นิพจน์ปกติหรือ JSONPath expressions สิ่งนี้ต้องการการถอดรหัส MitM สำหรับทราฟฟิก HTTPS

กฎ Body Rewrite ถูกกำหนดในส่วน [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

โหมด Regex

ดำเนินการค้นหาและแทนที่ด้วย regex มาตรฐานบนข้อความเนื้อหาที่ถอดรหัส ใช้ 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

แก้ไขเนื้อหา JSON โดยใช้ JSONPath expressions รองรับการอ่าน ตั้งค่า และลบค่าที่เส้นทางเฉพาะ

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

ไวยากรณ์ JSONPath ที่รองรับ

Expression คำอธิบาย
$.key เข้าถึงคุณสมบัติของวัตถุ
$.key.subkey เข้าถึงคุณสมบัติซ้อน
$[0] เข้าถึงองค์ประกอบอาร์เรย์ตามดัชนี
$.key[0].subkey การเข้าถึงแบบผสมระหว่างวัตถุและอาร์เรย์
$.items[*].name Wildcard: รายการทั้งหมดในอาร์เรย์
$.*.value Wildcard: คุณสมบัติทั้งหมด

ประเภทค่า

ค่า ผลลัพธ์
"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

ตัวอย่าง — การแก้ไขด้วย wildcard:

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

ตัวอย่างการใช้งานจริง

ลบพารามิเตอร์ติดตามจากการตอบกลับ JSON

ลบฟิลด์ trackingId และ sessionId จากการตอบกลับ API ทั้งหมด:

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

แทรกแท็กสคริปต์ในการตอบกลับ HTML

เพิ่มแท็ก <script> ที่กำหนดเองก่อน </body> ในหน้า HTML ทั้งหมด:

[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

เขียน URL CDN ใหม่ในการตอบกลับที่แคช

แทนที่การอ้างอิงทั้งหมดไปยัง CDN เก่าด้วย CDN ใหม่:

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

ไปป์ไลน์การประมวลผล

Body Rewrite จัดการโดยอัตโนมัติ:

  1. Content-Encoding: รองรับ gzip และ deflate ข้ามการเข้ารหัสที่ไม่รองรับ
  2. Transfer-Encoding: ถอด chunked transfer encoding ก่อนการประมวลผล
  3. การถอดรหัส: คลายการบีบอัดเนื้อหาก่อนใช้กฎการเขียนใหม่
  4. การเข้ารหัสใหม่: บีบอัดเนื้อหาใหม่และอัปเดต Content-Length ลบส่วนหัว Transfer-Encoding

ขนาดเนื้อหาสูงสุดสำหรับการประมวลผลการเขียนใหม่คือ 128KB โดยค่าเริ่มต้น เนื้อหาที่ใหญ่กว่านี้จะถูกส่งต่อโดยไม่มีการแก้ไข


หมายเหตุ

  • สำหรับทราฟฟิก HTTPS ต้องเปิดใช้งานการถอดรหัส MitM สำหรับชื่อโฮสต์ที่ตรงกัน
  • การจับคู่ regex เป็นแบบไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ เทมเพลตการแทนที่รองรับการอ้างอิงกลุ่มจับคู่ ICU: $0 (การจับคู่เต็ม), $1 (กลุ่มแรก), $2 (กลุ่มที่สอง) ฯลฯ
  • โหมด JSONPath ใช้ได้เฉพาะเมื่อเนื้อหาเป็น JSON ที่ถูกต้อง
  • กฎ Body Rewrite ถูกใช้กับเนื้อหาข้อความที่ถอดรหัส (UTF-8)
  • กฎหลายตัวสามารถจับคู่และใช้กับคำขอ/การตอบกลับเดียวกัน (พวกมันถูกใช้ตามลำดับที่กำหนด)
  • เมื่อกฎตั้งค่าหรือลบค่าผ่าน JSONPath ที่ไม่มีอยู่ เนื้อหาจะไม่เปลี่ยนแปลง
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-06-28 02:09:17

results matching ""

    No results matching ""