HTTP 规则
共有 4 种 HTTP 层级规则类型。USER-AGENT 和 URL-REGEX 需要 HTTP 请求头,因此它们只匹配 HTTP 请求(或启用了 MitM 解密的 HTTPS 请求)。PROTOCOL 和 SCRIPT 对任何连接都会评估。
USER-AGENT
USER-AGENT,Instagram*,DIRECT
如果请求的 User-Agent 匹配,则规则命中。支持通配符 * 和 ?。
URL-REGEX
URL-REGEX,^http://google\.com,DIRECT
如果 URL 匹配正则表达式,则规则命中。
PROTOCOL
PROTOCOL,TLS,Proxy
如果检测到的连接协议匹配,则规则命中。与 sniffing-enabled 结合使用效果最佳。NETWORK 可作为 PROTOCOL 的别名使用。
可接受的协议值:HTTP、HTTPS、TLS、TCP、UDP、QUIC、STUN、DNS、DOH、DOQ。
注意:协议嗅探目前只会产生
HTTP、TLS(任何 TLS 连接,包括 HTTPS)和QUIC(TUN 入站)。其他可接受的值为保留值——目前没有检测器会产生它们,因此使用这些值的规则不会匹配。特别地,要匹配 HTTPS 流量,请使用PROTOCOL,TLS而非PROTOCOL,HTTPS。
SCRIPT
SCRIPT,MyRuleScript,DIRECT
规则通过执行 JavaScript 脚本实现自定义匹配逻辑。脚本名称必须与 [Script] 部分中定义的 type=rule 脚本匹配。
[Rule]
SCRIPT,CheckInternal,PROXY
[Script]
CheckInternal = type=rule, script-path=internal-check.js
规则脚本接收 $request,并且必须调用 $done({matched: true}) 或 $done({matched: false})。注意 $request.dnsResult 仅在会话已被解析时可用(例如,直接使用 IP 地址发起的请求,或 DNS 解析后的第二轮匹配)。