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>

หมายเหตุ: นิพจน์ปกติของ URL ต้องจับคู่กับ URL ของคำขอแบบสมบูรณ์ ไม่ใช่แค่ส่วนย่อยของมัน โดยปกติรูปแบบควรลงท้ายด้วย .* เพื่อให้จับคู่ URL ที่มี path และ query string ใดๆ ได้

ทิศทาง

คำสำคัญ คำอธิบาย
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 หรือละไว้ ลบเส้นทาง

หมายเหตุ: การครอบค่าด้วยเครื่องหมายอัญประกาศไม่ได้บังคับให้เป็นประเภทสตริง — เครื่องหมายอัญประกาศจะถูกตัดออกระหว่างการแยกโทเค็น และประเภทจะถูกอนุมานจากเนื้อหาที่เหลือ ดังนั้น "42" จะกลายเป็นตัวเลข 42 และ "true" จะกลายเป็นบูลีน true คำสำคัญ nil ก็ได้รับการยอมรับเป็นคำสำคัญสำหรับการลบเช่นเดียวกับ 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 จากการตอบกลับ API ทั้งหมด เนื่องจากมีเพียงกฎแรกที่ตรงกันต่อทิศทางเท่านั้นที่ถูกใช้ ให้ใช้หนึ่งกฎต่อหนึ่งรูปแบบ URL:

[Body Rewrite]
^https://api\.example\.com/.* jsonpath-response jsonpath $.trackingId 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|token)\":\s*\"[^\"]+\"" "\"$1\":\"[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
  5. Accept-Encoding: เมื่อกฎการตอบกลับจับคู่กับ URL ของคำขอ ส่วนหัว Accept-Encoding ของคำขอจะถูกเขียนใหม่เป็น gzip, deflate, identity เพื่อให้การตอบกลับยังคงอยู่ในการเข้ารหัสที่ถอดรหัสได้

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


หมายเหตุ

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

หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก

results matching ""

    No results matching ""