独家合作CubenceAI 中转平台立减 10%访问

系统设置

请求过滤器

请求过滤器功能允许管理员对传入的 API 请求进行规则匹配和自动替换。通过配置过滤规则,可以修改请求头、替换请求体内容或删除敏感信息,实现数据脱敏、参数调整等高级功能。

访问请求过滤器页面

  1. 登录管理后台
  2. 在左侧导航栏选择「设置」
  3. 点击「请求过滤器」子菜单

功能概述

请求过滤器管理页面提供以下核心功能:

  • 过滤规则列表:查看所有已配置的过滤规则
  • 添加规则:创建新的过滤规则
  • 编辑规则:修改现有规则的配置
  • 删除规则:移除不再需要的规则
  • 启用/禁用:临时关闭或开启单条规则
  • 优先级排序:控制规则的执行顺序
  • 绑定范围:支持全局、指定供应商、或按供应商分组(group tags)绑定生效范围

过滤规则配置

每条过滤规则包含以下配置项:

作用范围(Scope)

指定规则作用于请求的哪个部分:

范围说明
header作用于 HTTP 请求头
body作用于请求体(JSON)

操作类型(Action)

定义对匹配内容执行的操作:

操作适用范围说明
removeheader删除匹配的请求头
setheader设置或覆盖请求头的值
json_pathbody修改请求体中指定 JSON 路径的值
text_replacebody在请求体中进行文本替换(支持深度递归)

匹配模式(Match Type)

定义如何匹配目标内容:

模式说明性能
exact精确匹配,目标内容必须完全一致最高
contains包含匹配,目标内容包含指定文本即匹配
regex正则表达式匹配,支持复杂模式较低

绑定范围(Apply / Binding)

指定该规则“对哪些请求生效”。这是 v0.3.39 引入的能力,用于把过滤规则精确绑定到某个供应商或某个供应商分组,避免全局生效带来的副作用。

绑定类型说明执行时机
global对所有请求生效选择供应商之前(在 Session/Warmup 之后、RateLimit 之前)
providers仅对指定 providerIds 生效选择供应商之后(只影响命中的供应商)
groups仅对匹配 groupTags 的供应商生效选择供应商之后(按分组批量生效)

groups 如何匹配?

groups 绑定会读取供应商的 groupTag 字段,并按英文逗号 , 拆分为多个 tag(会自动 trim 空格)。当过滤器的 groupTags 与供应商 tag 有任意交集时,即视为匹配。

其他字段

字段类型说明
targetstring匹配目标(字段名、JSON 路径或要替换的文本)
replacementstring替换内容(根据操作类型有不同含义)
prioritynumber执行优先级,数字越小越先执行
isEnabledboolean是否启用该规则
bindingTypeglobal | providers | groups生效范围(默认 global
providerIdsnumber[]仅当 bindingType=providers 时需要:指定要绑定的供应商 ID 列表
groupTagsstring[]仅当 bindingType=groups 时需要:指定要绑定的分组 tag 列表

操作类型详解

remove(删除)

删除指定的请求头。仅适用于 header 范围。

示例

  • Scope: header
  • Action: remove
  • Target: X-Custom-Header
  • 效果: 从请求头中移除 X-Custom-Header

set(设置)

设置或覆盖请求头的值。仅适用于 header 范围。

示例

  • Scope: header
  • Action: set
  • Target: User-Agent
  • Replacement: CustomAgent/1.0
  • 效果: 将请求头 User-Agent 设置为 CustomAgent/1.0

json_path(JSON 路径修改)

直接修改请求体中指定 JSON 路径的值。支持嵌套路径。

示例

  • Scope: body
  • Action: json_path
  • Target: messages[0].content
  • Replacement: Hello, World!
  • 效果: 将 messages 数组第一个元素的 content 字段修改为 Hello, World!

JSON 路径语法

支持点号分隔的路径和数组索引,例如:user.profile.nameitems[0].value

text_replace(文本替换)

在请求体中进行文本替换,支持深度递归遍历所有字符串字段。

示例

  • Scope: body
  • Action: text_replace
  • Match Type: regex
  • Target: sk-[a-zA-Z0-9]{32}
  • Replacement: [REDACTED]
  • 效果: 将请求体中所有匹配 API Key 格式的内容替换为 [REDACTED]

优先级说明

过滤规则按 priority 字段升序执行:

  • 数字越小,优先级越高,越先执行
  • 相同优先级的规则执行顺序不确定
  • 建议使用 10、20、30 等间隔值,便于后续插入新规则

执行流程示例

规则 A (priority=10) → 规则 B (priority=20) → 规则 C (priority=30)

配置示例

示例 1:移除敏感请求头

移除可能泄露客户端信息的请求头:

字段
Scopeheader
Actionremove
Match Typeexact
TargetX-Client-Secret
Priority10

示例 2:替换敏感文本

将请求体中的敏感信息替换为占位符:

字段
Scopebody
Actiontext_replace
Match Typeregex
Target\b\d{11}\b(11位数字,如手机号)
Replacement[PHONE_REDACTED]
Priority20

示例 3:修改 JSON 字段

修改请求中的特定 JSON 字段值:

字段
Scopebody
Actionjson_path
Match Typeexact
Targetmetadata.source
Replacementclaude-code-hub
Priority30

示例 4:仅对指定供应商注入 Header

当某些上游供应商需要额外 Header(或需要修正某些客户端头部)时,建议使用 bindingType=providers 精确绑定:

字段
Bindingproviders(选择指定 Provider)
Scopeheader
Actionset
TargetUser-Agent
ReplacementCustomAgent/1.0
Priority10

示例 5:对某个供应商分组统一替换 Body 内容

当你用 groupTag 将供应商分为多个环境/线路(例如 cn, us, openai-compatible)时,可以按分组批量绑定:

字段
Bindinggroups(选择 cn
Scopebody
Actionjson_path
Targetmetadata.source
Replacementcch-cn
Priority30

添加过滤规则

  1. 点击页面右上角的「添加过滤器」按钮
  2. 在弹出的对话框中填写以下信息:
    • 绑定范围:选择 Global / Providers / Groups
    • 作用范围:选择 Header 或 Body
    • 操作类型:选择 remove、set、json_path 或 text_replace
    • 匹配模式:选择精确匹配、包含匹配或正则表达式
    • 目标:输入要匹配的内容
    • 替换值:输入替换后的内容(部分操作需要)
    • 优先级:设置执行顺序
  3. 点击「创建」按钮保存

创建成功后,规则会立即生效。


安全说明

正则表达式安全

系统使用 safe-regex 库检测正则表达式,防止正则表达式拒绝服务攻击(ReDoS)

以下类型的正则表达式会被拒绝:

  • 包含嵌套量词的表达式(如 (a+)+
  • 可能导致指数级回溯的表达式

正则表达式验证

添加正则表达式类型的规则时,系统会自动验证表达式的安全性。不安全的正则表达式将无法保存。

执行时机

请求过滤器分为两类执行时机:

  1. 全局过滤器(bindingType=global):在 Guard Pipeline 中执行,位于 Session/Warmup 之后、RateLimit/Provider 之前,用于在进入限流与供应商选择前对请求做全局修补与规范化。

    • 注意:敏感词检测在更早阶段执行,因此全局过滤器不会改变敏感词拦截的判断结果。
  2. 供应商/分组过滤器(bindingType=providers/groups):在供应商选择完成后执行,只对命中的供应商生效,适用于“按供应商修补兼容性/注入特殊 Header”。


最佳实践

  1. 合理设置优先级:使用间隔值(如 10、20、30)便于后续插入新规则
  2. 优先使用精确匹配:性能最好,满足大部分需求
  3. 正则表达式谨慎使用:复杂的正则可能影响性能,建议先测试
  4. 添加描述信息:为规则添加清晰的描述,方便团队维护
  5. 测试新规则:添加规则后进行实际测试,确保效果符合预期
  6. 利用禁用功能:调试时可临时禁用规则而不删除

相关功能

Previous
敏感词