NozyLog 印象中能用脚本解决,搜了下也有现成方案——利用 network-changed event,再判断 $network.wifi.ssid。 但是由于不区分 Surge iOS/Mac,直接套用的话,Surge Mac 网关也会自动切直连,这当然是不希望的结果。 为了使 Surge Mac 例外,想加上区分 iOS,Mac 的功能再拿来用。 然而翻了下文档,好像没有区分 iOS,Mac 的 API? Workaround: 要不 Mac 上把 Scripting 关了?不好,有其他脚本希望 Mac 上启用; iOS,Mac 用不同 Profile?不好,管理成本翻倍。翻了下历史记录,每月改五六版。 简而言之,问题就是:脚本里如何区分自己在 iOS 还是 Mac?
mieqq NozyLog $httpAPI("GET", "v1/features/enhanced_mode", null, (data) => { if (data.error) { //console.log("iOS"); } else { //console.log("Mac"); } $done(); }); 这个 API 是 Mac 版特有的,检查下 data 的值可以判断是否 Mac 版
NozyLog mieqq 谢谢!这方法聪明哦。 我傻了,只想到用 GET /v1/devices 再判断 physicalAddress 的路子,然后发现这 API "Surge Mac only",就死路了。😅
aquddi AND,((SUBNET,192.168.24.11), (domain-suffix,Google.com)),direct // 网关IP为 mac IP 直连domain-suffix,Google.com,direct // 网关IP为非 mac IP 走代理 我觉得这是用规则可以解决的问题 当然这个有dns 设置上的问题
pastie mieqq 我的两台 iOS 设备,一台是 App Store 版本,一台是 TF 版本,都不能正常执行任何 httpapi 命令,报错 TypeError: undefined is not an object 😅想问下是我遗漏了什么配置么?要在脚本中使用$httpAPI 需要在设置中开启 HTTP API 么?还是说不开启也可以在脚本中使用?