Shadowrocket / manual

Shadowrocket Manual

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

如何使用脚本过滤功能?

cute opened this issue · comments

如何使用脚本过滤功能?

脚本过滤是2.1.24版本增加的一个功能,可以通过js脚本来处理HTTP请求和返回数据。

如何开启脚本过滤?

在配置文件里增加了 [Filter] 项目,支持 enablescript 两个参数。

  • 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

如何编写过滤脚本?

过滤脚本需要提供 scriptFilterExecutescriptFilterFree 两个方法, 运行环境提供了 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);
}

资源:

@cute 你好,新版本添加脚本方式已经改变,能否更新一下相关文档。