Linux 下的 Shadowsocks-Qt5 只负责监听本地的一个端口,为连接上来的请求提供代理服务,而哪些应该走代理哪些该走正常渠道,并不做区分,所以只能靠上层应用来区分了,即哪些应该连到 Shadowsocks-Qt5 监听的端口哪些不连上去。
执行 man google-chrome
,找到了如下选项:
–proxy-pac-url=URL
Specify proxy autoconfiguration URL. Overrides any environment variables or settings picked via theoptions dialog.
先从网上找了个 PAC 文件,将设置 proxy 的那句改成 var proxy = "SOCKS5 127.0.0.1:1080;";
,我的 Shadowsocks-Qt5 监听的是 127.0.0.1:1080,协议是 SOCKS5。再把这个 PAC 文件存到固定一个位置,比如我存在了 /home/wolfogre/Documents/autoproxy.pac
,然后再命令行里执行:/usr/bin/google-chrome-stable %U --proxy-pac-url=file:///home/wolfogre/Documents/autoproxy.pac
,Chrome 打开了,已经可以开心地上 Google 了,而访问一般的网站也没有走代理。
问题来了,每一次打开 Google 都要敲这么长的命令简直反人类,我还是希望通过点菜单里的漂亮图标启动。菜单里的所有图标启动项其实都是 /usr/share/applications
里的 *.desktop 文件,关于这一点下一节会在做说明,现在要做的就是以管理员身份编辑google-chrome.desktop
,在里面每一句 Exec=/××××
(应该有三句,分别针对普通打开,新疆窗口,佚名打开)的行末追加 --proxy-pac-url=file:///home/wolfogre/Documents/autoproxy.pac
。
这时候打开 Chrome 就能开心地上 Google 了。