HTTP 规则
共有 4 种 HTTP 层级规则类型。USER-AGENT 和 URL-REGEX 需要 HTTP 请求头,因此它们只匹配 HTTP 请求(或启用了 MitM 解密的 HTTPS 请求)。PROTOCOL 只匹配 TUN 入站会话,因为协议嗅探只在其中运行。SCRIPT 对任何连接都会评估。
USER-AGENT
USER-AGENT,Instagram*,DIRECT
如果请求的 User-Agent 匹配,则规则命中。支持通配符 * 和 ?。
URL-REGEX
URL-REGEX,^http://google\.com.*,DIRECT
如果 URL 匹配正则表达式,则规则命中。正则表达式必须匹配完整的 URL,而不是其中的一个子串:仅写 ^http://google\.com 只会匹配到恰好等于 http://google.com 的 URL。
PROTOCOL
PROTOCOL,TLS,Proxy
如果检测到的连接协议匹配,则规则命中。与 sniffing-enabled 结合使用效果最佳。NETWORK 可作为 PROTOCOL 的别名使用。
可接受的协议值:HTTP、HTTPS、TLS、TCP、UDP、QUIC、STUN、DNS、DOH、DOQ。
注意:检测到的协议仅会为 TUN 入站会话填充:嗅探对 TCP 产生
HTTP和TLS(任何 TLS 连接,包括 HTTPS),对 UDP 产生QUIC。经由 HTTP 或 SOCKS5 代理入站到达的连接永远不会匹配 PROTOCOL 规则。其他可接受的值为保留值——目前没有检测器会产生它们,因此使用这些值的规则不会匹配。特别地,要匹配 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 解析后的第二轮匹配)。
本页为英文版的翻译。如内容有出入,以英文版为准。