终于松了一口气,因为刚刚确认了 Surge 在我的手机上可以工作了。
前两天看到 Surge 2.1.1 上架的信息。虽然较一开始的 68 元的价格还是差很多,但比后来的 600 多的价格要便宜了一半。Surge 68 元的时候其实我有机会购买的,当时听 IT 公论谈起过这个工具,但我只知道它又是一个翻墙工具,而我已经买了云梯的服务,所以没怎么在意。后来它价格涨上去了,我才研究了一下,发现它不仅仅提供翻墙功能,对我更重要的是它可以设定规则。云梯等其它翻墙工具,要么都走代理要么都不走,这样如果走代理,国内的网速慢,也不大现实。有了规则判定,就好多了。
在电脑上我都是这么干的,而且我也离不开这个功能了。在 Mac 上 GoAgentX 可以批量导入规则,我也想不起我是导入的哪家的规则了。而在 Firefox 里,我不能不用 AutoProxy 这个插件,通过添加了 GFWList 的规则,一切都变得很美好。我一直期待着手机也能有这样的功能,没想到 Surge 就可以做到,所以我有些后悔没有买它,甚至都有直接买 600 多元的想法,后来忍住了。
这次新版本的 Surge 推出后,价格也有了变化,我不管坐着怎么解释新的定价政策,反正可以接受,我就买了。之后发现它不止规则判定这一点利好,我更欣慰的是,它的连接速度几乎可以忽略。过去,我用的云梯的 PPTP/L2TP 代理,每次要去设定里,找 VPN 选项,然后点连接。之后就有点向过去的拨号上网,需要等上大概半分钟的时间,而且还有将近三分之一的机率连接失败。所以,云梯我只在手机上用,电脑上我还是用自己架设的 Shadowsocks,几乎没有连接时间,而且连上就能用。Surge 可以在消息中心里加一个 widget,直接就能打开/关闭 VPN 连接,比过去要方便的太多了。我非常高兴,剩下的就是连上我的 Shadowsocks 服务器了。
我本来以为这是个非常简单的事情,结果昨天中午把电脑上的配置文件发到邮箱里去,复制了密码,然后填到了配置中去,结果不行,打不开 Google 网页。然后上网查说明,意识到 Shadowsocks 可不是 SOCKS5,那么试试 Socks5-TLS、HTTP、HTTPS 都不行。而且用户名那里需要填写加密方式,我填上了我的加密方式,照样无效。
没办法,上网查教程吧。我找到了两三个,基本上都是说要点一下那个通过 URL 添加配置的选项,然后输入一个网址。我试了第一个,404 无效,第二个倒是可以,然后根据说明改配置文件。这时也发现和我的 Surge 版本不一致带来的问题,比如服务器的 IP 地址,网上的配置是用逗号隔开的,我看着也不大对,然后看通过 Surge 配置界面添加的地址,是句点隔开的。我修改了服务器 IP、端口、加密方式、密码,然后看后面还跟了一个网址,是这个教程网站的,我就把它删掉了。之后保存,还是不行。再去配置界面看看,结果进不去了,说配置文件中有一行非法。我一看就是配置我的代理的那行,于是进文字编辑模式,也没法看到问题。把配置文件里的第一个选项由 custom 改为 socks5 就没事,但无法连接,这让我百思不得其解。我又看了几篇其它的教程,全是通过网址添加配置。当时时间挺紧,下午我要去平阴看孩子,到了那里只有手机上网,不大方便,所以我有点烦。
我有想过这次配置不成功花了冤枉钱,但马上打消。因为其他人可以配置成功,没道理到了我这里就不行。但我找到的这些教程也太操蛋了吧。我可以理解,对于一些只想翻墙的初学者,给他们说具体的配置会有难度,但你只教给我们通过网址添加配置,出了问题又能找谁呢?中间的具体配置有没有文章可以解说一下呢?很难。我想这样的快餐教程,没有一点容错性。当 Surge 版本升级后,一些配置的界面变化了,初学者想必会更加迷茫吧。
刚才我到了家,用自己的电脑好好上我研究。当中 Surge 的 iCloud 功能非常有帮助,打开了这个选项,配置文件就可以通过 iCloud 来同步,在 iMac 上进入 iClould Drive 就能看到 Surge 目录,进去后就是一个个的配置文件,可以直接从电脑上编辑,之后同步了就在电脑上体现,比在手机上一点一点的挪动光标进行修改方便多了。
我又找了其它几篇教程,并研究了他们的配置文件,发现代理设置这行,在 Shadowsocks 的密码后面还有一个参数。我从电脑上看是个二进制文件。我试着把它加入我的配置文件中去,Surge 马上就不说非法格式了。之后也出现了需要下载 Custom 配置的提示,按提示下载,之后就可以正常通过代理上网了。至于这最后一个参数,说是 ss.module,看名字是专门针对 Shadowsocks 的配置模块,应该是 Surge 专用的。我之前在电脑上从来没用用过这个东西,而且看网上说旧版本的 Surge 里是有这个的,后来给从官网上给删了。我想,Surge 的配置中,当这一行的第一个参数是 custom 的时候,就需要提供一个 module,告诉 Surge 通过某种具体的方式来进行连接,在我这里就是描述 Shadowsocks 的 ss.module。但 Surge 你的错误提示就不能说一句缺少一个参数/模块吗?让我走了这么多的弯路。至于具体这个 ss.module 到底是个什么格式,有什么奥妙,还需要我进一步调查。
最后,问题解决了,我需要考虑的就是我的云梯账户怎么办。但一开始我的抱怨其实还在,教程,能不能讲的详细一点,不要只想着给人解决当前的问题。毕竟,授人以鱼不如授人以渔。
恩,因为 surge 一直在更新,恐怕很多教程早就已经过时了。 话说你应该看作者在 medium 上写的教程,而不是第三方的。。 shadowsocks 配置需要那么做,主要是因为喝茶的原因吧 那个 module 就是 ss-libev 的主要代码编译得到的吧