假如家里路由级已经解决了科学上网,那么Mac等终端设备是没必要再重复开启代理的,不然速度会更慢,性能开销也属浪费,但是当出了家门,连到公司Wi-Fi,又或者在咖啡厅,那么又需要开启代理。OK,这个过程完全是固定模式,有办法自动吗?YES。
Surge提供了Event脚本支持,即可做到以上需求。
官方文档,参考这里
配置
主配置文件,增加以下配置
1 2
| [Script] script1 = type=event,event-name=network-changed,script-path=wifi-changed.js
|
wifi-changed.js脚本内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| const WIFI_DONT_NEED_PROXYS = ['xiaomi_Alan_5G_1']; const CURRENT_WIFI_SSID_KEY = 'current_wifi_ssid';
if (wifiChanged()) { const mode = WIFI_DONT_NEED_PROXYS.includes($network.wifi.ssid) ? 'direct' : 'rule'; $surge.setOutboundMode(mode); $notification.post( 'Surge', `Wi-Fi changed to ${$network.wifi.ssid || 'cellular'}`, `use ${mode} mode` ); }
function wifiChanged() { const currentWifiSSid = $persistentStore.read(CURRENT_WIFI_SSID_KEY); const changed = currentWifiSSid !== $network.wifi.ssid; changed && $persistentStore.write($network.wifi.ssid, CURRENT_WIFI_SSID_KEY); return changed; }
$done();
|
这样,WI-FI变动下即可自动切换代理策略了。
注意:网络环境变动都会触发network-changed事件,比如VPN,为了实现只在Wi-Fi变动时才触发,因此脚本增加了$persistentStore来记录当前所连Wi-Fi。
写在最后
不得不说Surge做的真的很棒,有效的解决了网络方面的相关需求。