规则语法
Whistle 通过简单的规则配置修改请求/响应,基本语法结构如下:
txt
pattern operation [lineProps...] [filters...]规则组成
每条规则由三个核心部分组成:
- 匹配模式 (
pattern),匹配请求 URL 的表达式,支持多种格式:- 域名匹配:
www.test.com(匹配该域名所有请求,含端口) - 路径匹配:
www.test.com/path - 正则表达式:
/^https?://test\.com//i - 通配符:
*.test.com、**.test.com/path
Whistle 有三种 URL 类型:
- 隧道代理:
tunnel://domain[:port] - WebSocket:
ws[s]://domain[:port]/path/to - 普通 HTTP/HTTPS:
http[s]://domain[:port]/path/to
- 域名匹配:
- 操作指令 (
operation),格式:protocol://valueprotocol:操作类型,如:reqHeaders:修改请求头resHeaders:修改响应头
value:操作内容,支持多种数据源:- 内联值:
reqHeaders://x-proxy-by=whistle(直接添加请求头) - 本地文件:
file://path/to/file - 远程资源:
https://example.com/data.json - 预设变量:
{key}(从 Rules 里面的内嵌值 或 Values 读取)
- 内联值:
operation 里面的
protocol://在以下两种场景时可以省略:ip或ip:port:等价于host://ip或host://ip:portD:\path\to、/path/to或{key}:等价于file://D:\path\to、file:///path/to或file://{key}
- 附加配置(可选)(
lineProps):仅对当前规则生效的附加配置,用于提升规则优先级、细化匹配规则功能等行为(支持组合使用),详见 lineProps - 过滤条件(可选) (
includeFilter/excludeFilter)- 逻辑关系:多条件间为「或」匹配,只要匹配其中一个过滤条件就成立
- 匹配范围:
- 请求:URL、方法(GET/POST等)、头部字段、内容、客户端 IP
- 响应:状态码、头部字段、内容、服务端 IP
规则高级配置
- 组合配置txt
pattern operation1 operation2 ... [includeFilter://pattern1 ... excludeFilter://patternN ...] - 位置调换(
pattern1和operation不同时为 URL 或域名)即不同时为形如
https://test.com/path、//test.com/path、test.com/path、test.com的 URL 或域名txtoperation pattern1 pattern2 ... [includeFilter://pattern1 ... excludeFilter://patternN ...] - 换行配置txt
line` operation pattern1 pattern2 ... [includeFilter://pattern1 ... excludeFilter://patternN ...] `Whistle 会自动将代码块里面的换行符自动替换成空格