跳转到内容

匹配与替换 ​

匹配与替换在流量通过代理时自动修改流量,无需暂停或对每个请求手动操作。

规则的工作方式 ​

每条规则定义要查找的内容及处理方式。当请求或响应符合条件时,规则会立即应用其转换。

规则按列表中的顺序应用。如果两条规则针对同一个头部,第一条匹配的规则先应用,后续规则看到的是该更改的结果。

规则字段 ​

字段说明
名称规则的标签。使用描述性名称来标识其用途。
方向规则应用于请求、响应还是两者
操作要执行的转换(参见下方操作表)
匹配模式依据操作,可为字面量、正则表达式或完整内容
匹配值要查找的字符串或模式
替换值要替换成的值
已启用无需删除规则即可启用或停用的开关
筛选条件可选的方法、主机、路径和 HTTPQL 条件,用于限制规则应用范围

操作 ​

操作功能
添加标头添加具有固定名称和值的新头部
移除标头按名称删除头部
替换标头替换现有头部的值
替换正文使用匹配值替换消息体的一部分
路径 / 查询 / 查询参数更改请求路径或查询值
请求 / 响应行更改选定的 HTTP 起始行组成部分
状态码更改响应状态
原始消息同时转换 HTTP 起始行、头部和消息体
WebSocket 载荷替换匹配的客户端/服务器消息内容
工作流对选定内容运行已启用的转换工作流

匹配模式 ​

字面文本匹配精确字符串。适用于固定令牌、头部名称或特定值。

正则表达式使用正则表达式匹配。目标内容会变化时使用此模式,例如匹配每次会话都会变化的令牌,或捕获分组并在替换中复用。

在正则表达式替换中,使用 $1、$2 等捕获分组,在替换值中引用匹配的部分。

整体替换将整个选定内容传递给转换,而不是查找子字符串。有些操作(例如添加/移除具名头部)使用字面名称,不提供所有模式。

转换完整响应体 ​

  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")

工作流接收整个消息体,其输出会替换该消息体。工作流(标头)转换具名头部,而工作流(原始标头)转换头部块。这些输入与响应体不同。

HTTPQL 筛选条件在可用的请求/响应上下文中检查。请求方向的规则不能依赖尚未到达的响应。如果规则产生大量运行,请禁用工作流日志;诊断转换问题时再临时启用。

调整规则顺序 ​

拖动规则行,调整其在列表中的位置。当规则修改同一请求或响应中重叠的部分时,顺序非常重要。

AI 辅助 ​

在规则编辑器中点击 使用 AI 填写,用自然语言描述想要的更改。Ogma 会根据描述生成规则字段。启用规则前,请检查并调整生成的值。

有效提示的示例:

  • “移除所有响应中的 X-Frame-Options 头部”
  • “将 Authorization 头部值替换为我的测试令牌”
  • “给所有请求添加名为 X-Debug、值为 true 的头部”

测试规则 ​

在为实时流量启用规则前,先用示例请求进行测试:

  1. 打开规则编辑器。
  2. 将原始 HTTP 请求粘贴到测试面板中。
  3. 点击应用规则。面板会显示结果及应用了哪些规则。
  4. 确认输出符合预期。
  5. 启用规则。

测试面板还提供响应目标,包含状态、头部和消息体输入。请检查已应用规则列表:这测试的是适用的规则,而不只是单独的编辑器字段。

匹配与替换与拦截 ​

匹配与替换是自动的。规则启用后,无需你采取任何操作,就会转换每个匹配的请求或响应。

拦截暂停流量并等待手动决定。当正确的更改取决于你需要逐个请求评估的上下文时,使用拦截。当同一转换应每次应用且无需检查时,使用匹配与替换。

常见用途 ​

  • 在所有请求中替换会话 Cookie,以测试另一个账号。
  • 添加启用调试或管理员模式的头部。
  • 移除响应中的安全头部,以评估客户端行为。
  • 替换重定向响应中硬编码的主机。
  • 重写请求路径前缀。

专有软件。保留所有权利。