---
url: https://docs.ogmabox.com/th/app/match-replace.md
description: >-
  แก้ไขทราฟฟิก HTTP และ WebSocket
  ที่บันทึกไว้โดยอัตโนมัติด้วยกฎจับคู่และแทนที่ของ Ogma
---

# จับคู่และแทนที่ {#match-replace}

จับคู่และแทนที่แก้ไขทราฟฟิกโดยอัตโนมัติขณะผ่านพร็อกซี โดยไม่หยุดรอหรือให้ดำเนินการด้วยตนเองกับแต่ละคำขอ

## วิธีทำงานของกฎ {#how-rules-work}

แต่ละกฎกำหนดสิ่งที่ค้นหาและการดำเนินการกับสิ่งนั้น เมื่อคำขอหรือการตอบกลับตรงกับเงื่อนไข กฎจะใช้การแปลงทันที

กฎทำงานตามลำดับที่ปรากฏในรายการ หากสองกฎแก้ไขส่วนหัวเดียวกัน กฎแรกที่ตรงกันจะทำงานก่อน และกฎถัดไปจะเห็นผลจากการเปลี่ยนแปลงนั้น

## ฟิลด์กฎ {#rule-fields}

| ฟิลด์ | คำอธิบาย |
| --- | --- |
| ชื่อ | ป้ายชื่อกฎ ใช้ชื่อที่สื่อความหมายเพื่อระบุจุดประสงค์ |
| ทิศทาง | กฎใช้กับคำขอ การตอบกลับ หรือทั้งสอง |
| การดำเนินการ | การแปลงที่ต้องทำ ดูตารางการดำเนินการด้านล่าง |
| โหมดการจับคู่ | ข้อความตรงตัว นิพจน์ปรกติ หรือเนื้อหาทั้งหมด ตามการดำเนินการ |
| ค่าที่จับคู่ | สตริงหรือรูปแบบที่ค้นหา |
| ค่าแทนที่ | ค่าที่ใช้แทน |
| เปิดใช้งาน | สวิตช์เปิดหรือปิดกฎโดยไม่ลบ |
| ตัวกรอง | เงื่อนไขเมธอด โฮสต์ พาธ และ HTTPQL ที่ระบุเพิ่มเติมเพื่อจำกัดตำแหน่งที่กฎทำงาน |

### การดำเนินการ {#operations}

| การดำเนินการ | ผลที่เกิดขึ้น |
| --- | --- |
| เพิ่มส่วนหัว | เพิ่มส่วนหัวใหม่ที่มีชื่อและค่าคงที่ |
| ลบส่วนหัว | ลบส่วนหัวตามชื่อ |
| แทนที่ส่วนหัว | แทนค่าของส่วนหัวที่มีอยู่ |
| แทนที่เนื้อหา | แทนที่ส่วนหนึ่งของเนื้อหาโดยใช้ค่าที่จับคู่ |
| พาธ / คิวรี / พารามิเตอร์คิวรี | เปลี่ยนพาธคำขอหรือค่าคิวรี |
| บรรทัดคำขอ / การตอบกลับ | เปลี่ยนองค์ประกอบที่เลือกของบรรทัดเริ่มต้น HTTP |
| รหัสสถานะ | เปลี่ยนสถานะการตอบกลับ |
| ข้อความ Raw | แปลงบรรทัดเริ่มต้น ส่วนหัว และเนื้อหา HTTP พร้อมกัน |
| เพย์โหลด WebSocket | แทนที่เนื้อหาข้อความไคลเอนต์หรือเซิร์ฟเวอร์ที่ตรงกัน |
| เวิร์กโฟลว์ | เรียกใช้เวิร์กโฟลว์แปลงที่เปิดใช้งานกับเนื้อหาที่เลือก |

## โหมดจับคู่ {#match-modes}

**ข้อความตรงตัว** จับคู่สตริงตรงตามที่ระบุ ใช้กับโทเค็นคงที่ ชื่อส่วนหัว หรือค่าที่เจาะจง

**นิพจน์ปรกติ** จับคู่ด้วยนิพจน์ปรกติ ใช้เมื่อเป้าหมายเปลี่ยนแปลง เช่น จับคู่โทเค็นที่เปลี่ยนในแต่ละเซสชัน หรือจับกลุ่มเพื่อนำกลับมาใช้ในการแทนที่

ในการแทนที่ด้วยนิพจน์ปรกติ ใช้กลุ่มจับคู่ `$1`, `$2` และต่อไป เพื่ออ้างถึงส่วนที่ตรงกันในค่าแทนที่

โหมด **ทั้งหมด** ส่งเนื้อหาที่เลือกทั้งหมดไปให้การแปลงแทนการค้นหาสตริงย่อย บางการดำเนินการ เช่น เพิ่มหรือลบส่วนหัวที่ระบุชื่อ ใช้ชื่อแบบตรงตัวแทนและไม่ได้มีทุกโหมดให้เลือก

## แปลงเนื้อหาการตอบกลับทั้งหมด {#transforming-a-complete-response-body}

1. สร้างและเปิดใช้เวิร์กโฟลว์ **แปลง** แล้วตรวจสอบด้วยอินพุตทดสอบ
2. สร้างกฎจับคู่และแทนที่ที่มีทิศทาง **การตอบกลับ** และการดำเนินการ **เวิร์กโฟลว์ (เนื้อหา)**
3. เลือกโหมดจับคู่ **ทั้งหมด** แล้วเลือกเวิร์กโฟลว์
4. จำกัดกฎด้วยตัวกรอง HTTPQL เช่น:

```text
req.host.eq:"cdn.example.com" AND (req.path.cont:".js" OR resp.headers["Content-Type"].value.cont:"javascript")
```

เวิร์กโฟลว์รับเนื้อหาทั้งหมด และเอาต์พุตจะแทนเนื้อหานั้น **เวิร์กโฟลว์ (ส่วนหัว)** แปลงส่วนหัวที่ระบุชื่อ ส่วน **เวิร์กโฟลว์ (ส่วนหัว Raw)** แปลงบล็อกส่วนหัว ทั้งสองรับอินพุตต่างจากเนื้อหาการตอบกลับ

ตัวกรอง HTTPQL ตรวจสอบในบริบทคำขอและการตอบกลับที่มีอยู่ กฎในทิศทางคำขอไม่สามารถพึ่งการตอบกลับที่ยังมาไม่ถึง ปิดการบันทึกข้อมูลเวิร์กโฟลว์เมื่อกฎทำให้เกิดการรันจำนวนมาก และเปิดชั่วคราวเพื่อวินิจฉัยการแปลง

## จัดลำดับกฎใหม่ {#reordering-rules}

ลากแถวกฎเพื่อเปลี่ยนตำแหน่งในรายการ ลำดับสำคัญเมื่อกฎแก้ไขส่วนที่ทับซ้อนกันในคำขอหรือการตอบกลับเดียวกัน

## AI ช่วยเหลือ {#ai-assist}

คลิก **กรอกด้วย AI** ในตัวแก้ไขกฎแล้วอธิบายสิ่งที่ต้องการเปลี่ยนด้วยภาษาธรรมชาติ Ogma จะสร้างฟิลด์กฎจากคำอธิบาย ตรวจสอบและปรับค่าที่สร้างก่อนเปิดใช้กฎ

ตัวอย่างคำสั่งที่เหมาะสม:

* "ลบส่วนหัว X-Frame-Options จากการตอบกลับทั้งหมด"
* "แทนค่าส่วนหัว Authorization ด้วยโทเค็นทดสอบของฉัน"
* "เพิ่มส่วนหัวชื่อ X-Debug ค่า true ให้คำขอทั้งหมด"

## ทดสอบกฎ {#testing-a-rule}

ก่อนเปิดใช้กฎกับทราฟฟิกจริง ให้ทดสอบด้วยคำขอตัวอย่าง:

1. เปิดตัวแก้ไขกฎ
2. วางคำขอ HTTP แบบ Raw ในแผง **ทดสอบ**
3. คลิก **ใช้กฎ** แผงจะแสดงผลลัพธ์และกฎที่ทำงาน
4. ตรวจสอบว่าเอาต์พุตตรงตามที่คาด
5. เปิดใช้กฎ

แผงทดสอบยังมีเป้าหมาย **การตอบกลับ** พร้อมอินพุตสถานะ ส่วนหัว และเนื้อหา ตรวจสอบรายการกฎที่ใช้ การทดสอบนี้ครอบคลุมกฎที่ใช้ได้ ไม่ใช่เพียงฟิลด์เดี่ยวในตัวแก้ไข

## จับคู่และแทนที่เทียบกับดักรับ {#match-replace-vs-intercept}

**จับคู่และแทนที่** ทำงานอัตโนมัติ เมื่อเปิดกฎแล้ว กฎจะแปลงทุกคำขอหรือการตอบกลับที่ตรงกันโดยไม่ต้องให้คุณดำเนินการ

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

## การใช้งานทั่วไป {#common-uses}

* สลับคุกกี้เซสชันในทุกคำขอเพื่อทดสอบอีกบัญชี
* เพิ่มส่วนหัวที่เปิดโหมดแก้จุดบกพร่องหรือผู้ดูแลระบบ
* ลบส่วนหัวความปลอดภัยจากการตอบกลับเพื่อประเมินพฤติกรรมฝั่งไคลเอนต์
* แทนที่โฮสต์ที่เขียนตายตัวในคำตอบเปลี่ยนเส้นทาง
* เขียนคำนำหน้าพาธคำขอใหม่

## หน้าที่เกี่ยวข้อง {#related-pages}

* [ดักรับ](./intercept.md)
* [ประวัติ HTTP](./http-history.md)
* [เวิร์กโฟลว์](./workflows.md)
