Surge结合Whistle使用
Surge目前是我必不可少的代理工具,灵活的代理规则及开放的API使得我也很容易二次开发来进一步的提升效率,但工作中一直使用公司OA客户端及Whistle等,借着假期考虑下结合使用的可能
当前的使用情况
- 非工作机,
Surge
作为我的个人网络代理利器,非工作机解决科学上网等代理问题 - 工作机,
- 使用
OA即公司代理客户端
解决访问公司内网服务,身份验证及科学上网 - 使用
Whistle+SwitchyOmega
,解决开发中的网页代理调试问题
- 使用
Chrome代理设置为走Whistle,Whistle没有命中的代理自然继续走系统请求
已作出的改进
基于Whistle的API开发了Alfred Workflow来提升Rule的切换效率
基于Surge的API开发了Alfred Workflow来提升Surge代理的切换效率
当前存在痛点
SwitchyOmega的代理开关需要手动操作
Whistle代理有时会莫名报错,一部分原因是当前公司网络的不稳定,但一部分我认为是Whistle在大量请求时容易崩
公司的OA支持访问外网,但是相比较我自己的代理节点,访问外网的速度不算快且有些网站还是会莫名被屏蔽,但是自己的代理访问是OK的
基于此,考虑解决下痛点
最终形态为:OA+Surge+Whistle来解决当前工作中的代理/开发调试问题
好处
完全废弃
SwitchyOmega
,采用Surge整体负责代理分发,这样work的不仅仅是Chrome,比如还有SafariSurge代理使得外网等一些访问请求不必要走Whistle代理,提升速度
灵活采用自己的代理节点或者OA来访问外网
灵活关闭Whistle调试代理
解决方案
Chrome下删除
SwitchyOmega
,OA保持开启的基础上开启Surge,但Surge增强模式关闭Surge增加以下配置
增加Whistle代理节点即指向本地的whistle node服务
1
Dev-Whistle-local = http, 127.0.0.1, 8899
增加Rule,使得Chrome,Safari等走Whistle代理,如果是不需要whistle时只需要关闭该模块即可
1
2
3
4PROCESS-NAME,Google Chrome*,Dev-Whistle-local // Chrome-Whistle代理
OR,((PROCESS-NAME,Safari*), (PROCESS-NAME,/Library/Apple/System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.Networking.xpc/Contents/MacOS/com.apple.WebKit.Networking), (PROCESS-NAME,/System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.Networking.xpc/Contents/MacOS/com.apple.WebKit.Networking)),Dev-Whistle-local
PROCESS-NAME,firefox*,Dev-Whistle-local // FF-Whistle代理
PROCESS-NAME,Microsoft Edge*,Dev-Whistle-local // Edge-Whistle代理
注意
- 将该进程代理规则后放,这样的好处是排在之前的比如Google,GitHub等域名代理可以直接先命中走代理。基于此做到部分依然可以走Surge代理,之后的走whistle来解决开发调试问题
- Safari代理较麻烦,Surge 读取的是 proc_pidpath() 的程序路径,不同版本调用程序所在路径不同,这里无法使用相对路径,因此采用逻辑运算符Or。
- Surge HTTP API使得可以利用API进行规则的灵活开关,由于rule相关API没有暴露修改的口子,但当前提供了Module相关API,且支持开关模块。因此对于一键开关代理还是可行。可以将以上代理规则封装为module,这样可以方便打开关闭。
效果
- 整个工作流不再需要
SwitchyOmega
,当需要whistle来开发调试时,GUI操作Surge Rule开启Rule即可,这样Chrome/Safari的请求默认都会走Whistle代理 - 公司OA不支持接管所有客户端代理,因此Gmail一直无法正常查收,因为Surge也接管了网络代理,因此也可以增加规则来使mail客户端走代理,gmail邮件终于可以接收了
不足的地方
- 当前这种模式下,Surge的增强模式无法打开,否则公司服务很多会出现鉴权失败,毕竟已经走的自己的代理服务
- 这里没有将公司服务的所有域名一个个列出,因此最终的Final规则只能走公司的代理即直连,从而确保可以正常访问
- 这里配置后会使得Chrome所有请求都会走Whistle代理,whistle没有命中的自然会走系统直连,这样做有利有弊,如果直连无法访问,也只能增加规则在进程代理之前了。
Surge增强模式开启?
其实确实有办法开启,即确保公司的相关服务都正常走公司的相关代理服务即可,但是代价就是需要将所有域名整理,配置规则,并且也会存在一些没有考虑到的情况,不断应对,因此,不建议这么做,太过于费时费力。
写在最后
- 经过一番折腾,Surge也可以与Whistle,公司OA代理客户端并存了,同时Safari等其它客户端也可以很方便的走Whistle代理