Surge Mac 1.4.0 版本增加了命令行模式,可以通过命令行对 Surge 进行控制。
conf 配置文件中需要增加一行
external-controller-access = pw@0.0.0.0:6155
# warning, notify, info, verbose
skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, localhost, *.local
bypass-tun = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
interface = 0.0.0.0
port = 8888
socks-port = 8889
loglevel = notify
external-controller-access = pw@0.0.0.0:6155
利用 ln 命令为 Surge 程序中包含的 Surge-cli 创建一个「符号链接」保存到个人目录下方便在终端中调用。
ln /Applications/Surge.app/Contents/Resources/surge-cli ./surge-cli
软链接创建完成后就可以在终端中运行对应的命令来获取结果。
surge-cli 默认会根据 ~/.surge.conf 中的配置,自动连接本机的 Surge。如果你想控制另一台设备上的 Surge (包括 iOS),请使用 -h 选项。
surge-cli -h pw@192.168.1.10:6155 COMMAND
基于命令的格式,范例中 apw 是配置中我设定的密码字符串,192.18.0.2 填写的是 iPhone 在 Wi-Fi 网络中获取的 IP (设置-无线局域网,点 ⓘ 查看 iPhone 的 IP 地址),COMMAND 部分填写 watch request 命令查看 iPhone 上的网络请求。
支持的命令列表:
- watch request:执行该命令后持续输出最新收到的请求
- 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:强制清除规则匹配缓存