Surge CLI 开始测试
surge-cli 是一个类似于 redis-cli 的工具,采用 C/S 的通信方式,用于通过命令行控制本地或者远程设备的 Surge。
支持 CLI 的版本获取方式
OSX: https://surge.run/mac/Surge-1.4.0-145.zip
iOS: From TF Build 569 (1.3.0)
OSX 的选项中已经加入 Include Beta Builds 选项,选中后将可以自动更新 Beta 版本。
- 准备可执行文件
surge-cli 的可执行文件存在于 OSX 版本的应用包中,使用以下命令建立符号连接后就可以随意使用了。
ln -s /Applications/Surge.app/Contents/Resources/surge-cli /usr/local/bin/surge-cli
之后会将这个过程放入 Preferences 面板中。
2. 准备配置文件
需要在配置文件中加入以下配置
[General]
external-controller-access = apasswordhere@0.0.0.0:6155
为了安全性考虑,请设置一个较为复杂的密码。
3. surge-cli 连接
surge-cli 默认会根据 ~/.surge.conf 中的配置,自动连接本机的 Surge。如果你想控制另一台设备上的 Surge (包括 iOS),请使用 -h 选项。
surge-cli -h apasswordhere@192.168.1.10:6155 COMMAND
4. surge-cli 命令
surge-cli 的交互模式(interactive mode)还在开发,目前只能以将命令直接以启动参数传入的方式运行。如
surge-cli dump request
命令不区分大小写,目前支持的命令如下:
- watch request:执行该命令后 surge-cli 将不会退出,持续输出最新收到的请求。
- test-rule :测试某个 hostname 会被哪个 rule 捕获 (test-rule example.com)
- dump dns:显示目前的 DNS 缓存和 DNS 条目
- dump policy:显示所有可用的策略名称
- dump active:显示目前活动的连接
- dump request:显示最近的请求
- dump rule:显示目前所有生效的规则
- set-policy:设置针对某个 hostname 的策略(set-policy yach.me DIRECT),相当于在 0 位置插入了条 DOMAIN 或者 IP 规则。
- insert-rule:在特定 index 插入一条规则,index 和 dump rule 的结果一致(insert-rule DOMAIN-SUFFIX,yach.me,Proxy 10)
- reload:重新加载配置(仅限 OSX)
- flush dns:强制清除本地 DNS 缓存
- flush rule:强制清除规则匹配缓存。
另外,可以使用 -r( — raw)参数,让 cli 直接输出原始的 JSON 数据。
底层的通讯协议使用了非常简单的规范,之后我整理后会放出,同时会放出 Objective-C 版本的开源 SDK。方便各位为 Surge 开发各类工具:)
#TODO
- 更多命令的支持
- — help 和 — version 选项
- interactive mode