规则语法
Whistle 通过简单的规则配置修改请求/响应,基本语法结构如下:
txt
pattern operation [includeFilter://pattern1 ... excludeFilter://patternN ...]规则组成
每条规则由三个核心部分组成:
- 匹配模式 (
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}
- 过滤条件(可选) (
includeFilter/excludeFilter)- 逻辑关系:多条件间为「或」匹配,只要匹配其中一个过滤条件就成立
- 匹配范围:
- 请求:URL、方法(GET/POST等)、头部字段、内容、客户端 IP
- 响应:状态码、头部字段、内容、服务端 IP