如何使用脚本过滤功能?
cute opened this issue · comments
如何使用脚本过滤功能?
脚本过滤是2.1.24版本增加的一个功能,可以通过js脚本来处理HTTP请求和返回数据。
如何开启脚本过滤?
在配置文件里增加了 [Filter]
项目,支持 enable
和 script
两个参数。
enable
支持true
或者false
,表示开启或者关闭过滤功能。script
的值为 Base64 编码后的过滤脚本内容。
示例:
[Filter]
enable=true
script=...
如何指定规则开启脚本过滤?
Shadowrocket 增加了一个新的可选项:script-filter
。
[Rule]
DOMAIN,example.com,DIRECT,script-filter
DOMAIN,example.net,PROXY,script-filter
[URL Rewrite]
^http://example.com/robots.txt _ DIRECT script-filter
^http://example.net/robots.txt _ PROXY script-filter
如何编写过滤脚本?
过滤脚本需要提供 scriptFilterExecute
和 scriptFilterFree
两个方法, 运行环境提供了 HTTPParser
处理类用于解析 HTTP 请求和返回数据。
scriptFilterExecute(args)
过滤请求和返回数据。
参数字段:
type:REQUEST 或 RESPONSE
uuid:HTTP 请求 UUID
url:HTTP 请求 URL
data:HTTP 原始数据
response:回调函数
返回数据:
string:修改后的数据
boolean:关闭连接
undefined:不修改
null:退出过滤。如有资源要释放,需要自己调用scriptFilterFree
示例:
function scriptFilterExecute(args) {
console.log('filter ' + args.uuid);
console.log('url ' + args.url);
}
scriptFilterFree(uuid)
释放相关资源。
参数:
HTTP 请求 UUID
示例:
function scriptFilterFree(uuid) {
console.log('free ' + uuid);
}