比對與取代
比對與取代會在流量通過代理時自動修改流量,不必暫停,也不必對每個請求手動操作。
規則的運作方式
每條規則定義要尋找的內容及處理方式。當請求或回應符合條件時,規則會立即套用轉換。
規則依清單中的順序套用。如果兩條規則針對同一個標頭,第一條符合的規則會先套用,後續規則看到的是該項變更的結果。
規則欄位
| 欄位 | 說明 |
|---|---|
| 名稱 | 規則的標籤。請使用能說明用途的名稱。 |
| 方向 | 規則套用至請求、回應或兩者 |
| 操作 | 要執行的轉換(請參閱下方操作表格) |
| 比對模式 | 依操作而定,可為字面文字、正規表示式或完整內容 |
| 比對值 | 要尋找的字串或模式 |
| 取代值 | 要替換成的值 |
| 已啟用 | 不必刪除規則即可啟用或停用的開關 |
| 篩選條件 | 選填的方法、主機、路徑和 HTTPQL 條件,用於限制規則的套用範圍 |
操作
| 操作 | 功能 |
|---|---|
| 新增標頭 | 新增具有固定名稱和值的標頭 |
| 移除標頭 | 依名稱刪除標頭 |
| 取代標頭 | 取代現有標頭的值 |
| 取代本文 | 使用比對值取代本文的一部分 |
| 路徑 / 查詢 / 查詢參數 | 變更請求路徑或查詢值 |
| 請求 / 回應行 | 變更選取的 HTTP 起始行組成部分 |
| 狀態碼 | 變更回應狀態 |
| 原始訊息 | 同時轉換 HTTP 起始行、標頭和本文 |
| WebSocket 酬載 | 取代符合條件的用戶端/伺服器訊息內容 |
| 工作流程 | 對選取的內容執行已啟用的轉換工作流程 |
比對模式
字面文字會比對完全相同的字串,適用於固定權杖、標頭名稱或特定值。
正規表示式會使用正規表示式比對。目標內容會變化時可使用此模式,例如比對每個工作階段都會變更的權杖,或擷取群組並在取代時重複使用。
在正規表示式取代中,使用 $1、$2 等擷取群組,在取代值中參照符合的部分。
整段取代會將選取的完整內容傳給轉換,不會尋找子字串。有些操作,例如新增/移除具名標頭,使用的是字面名稱,因此不會提供所有模式。
轉換完整回應本文
- 建立並啟用轉換工作流程,再用測試輸入驗證。
- 建立比對與取代規則,將方向設為回應,操作設為工作流程 (本文)。
- 選擇整段取代比對模式,並選擇工作流程。
- 使用 HTTPQL 篩選條件縮小規則範圍,例如:
text
req.host.eq:"cdn.example.com" AND (req.path.cont:".js" OR resp.headers["Content-Type"].value.cont:"javascript")工作流程會接收完整本文,其輸出會取代該本文。工作流程 (標頭)轉換具名標頭,工作流程 (原始標頭)則轉換標頭區塊。這些輸入與回應本文不同。
HTTPQL 篩選條件會在可用的請求/回應上下文中檢查。請求方向的規則不能依賴尚未到達的回應。規則產生大量執行時,請停用工作流程記錄;診斷轉換問題時再暫時啟用。
重新排列規則
拖曳規則列,調整其在清單中的位置。當規則修改同一個請求或回應中重疊的部分時,順序很重要。
AI 輔助
在規則編輯器中按一下 使用 AI 填入,以自然語言描述想要的變更。Ogma 會根據描述產生規則欄位。啟用前,請檢查並調整產生的值。
有效提示的範例:
- 「移除所有回應中的 X-Frame-Options 標頭」
- 「將 Authorization 標頭值取代為我的測試權杖」
- 「在所有請求中新增名為 X-Debug、值為 true 的標頭」
測試規則
將規則套用至即時流量前,請先用範例請求測試:
- 開啟規則編輯器。
- 將原始 HTTP 請求貼到測試面板。
- 按一下套用規則。面板會顯示結果,以及套用了哪些規則。
- 確認輸出符合預期。
- 啟用規則。
測試面板也提供回應目標,包含狀態、標頭和本文輸入。請檢查已套用的規則清單:測試的是適用的規則,不只是孤立的編輯器欄位。
比對與取代與攔截
比對與取代會自動執行。規則啟用後,無須你採取任何操作,就會轉換每個符合條件的請求或回應。
攔截會暫停流量,等待手動決定。當正確的變更取決於需要逐一請求評估的上下文時,請使用攔截。同一項轉換應每次套用且不必檢查時,請使用比對與取代。
常見用途
- 替換所有請求中的工作階段 Cookie,以測試另一個帳號。
- 新增啟用除錯或管理員模式的標頭。
- 移除回應中的安全標頭,評估用戶端行為。
- 取代重新導向回應中寫死的主機。
- 重寫請求路徑前綴。