GoAgentX 的 后续 维护及使用

最近 Shadowsocks 作者 clowwindy 被喝茶然后清空了他的整个项目代码。一周后goagent也悄悄清空了所有的项目代码。Github又一次受到大规模DDOS攻击。

是时候使用 PAC 白名单了一文当中我给大家介绍了一个反gfwlist道而行的白名单PAC,它不同于前者对GFWed域名做匹配,而是对未GFWed的域名匹配……好吧,我个人也很赞同作者的想法——如今使用白名单才是趋势。

总之,对于想要使用自定义PAC的人来说,一个一体化设置的工具是必不可少的——毕竟,我们还是习惯图形化的操作界面。

悄然消失的GoAgentX

在我们被近期的一系列“大事件”闹的人心惶惶的时候,OS X 下简单又好用的 GoAgentX 却早就悄然消失在了人海之中。我手里的版本是 2.3.7 ,可能这就是它的最后一个版本吧——我没有找到更新的版本。

它的官网已经打不开,而 Github 中的项目代码也早就被清空了。不过值得欣慰的是,这个最后的版本目前即使实在 10.11 上也跑的不错——唯一的缺点可能就是打开的时候防火墙会提示联网(可能签名过期了吧)。

防火墙联网提示

防火墙联网提示

继续使用

不过,如果你不使用 OS X 自带的防火墙的话,那你就不需要面对这个对话框了——我推荐你打开它。

GoAgentX 支持好几种代理的服务,可以智能开启和切换(如果端口相同则切换)服务,而且这些服务都是以插件的形式来加入的——这意味着我们仍旧可以给GoAgentX里使用的服务进行升级。所以,在主程序完全不能使用之前,我们仍旧可以继续使用它而不用担心过时。

以插件形式存在的服务

以插件形式存在的服务

PAC 的配置

关于PAC的配置这里不再赘述,我们使用 GoAgentX 就是为了用那个白名单,不然使用 ShadowsocksX 岂不更加酸爽。所以,请参考 是时候使用 PAC 白名单了 。


 

更新服务

GoAgentX 已经没有人维护了,所以更新按钮再也不能用了,我们无法升级主程序,但可以手动升级插件。你只需要访问 /Applications/GoAgentX.app/Contents/PlugIns 就可以看到插件了。我们同样用鼠标点击右键来“显示包内容”。

更新 Shadowsocks

虽然我们前文说了 SS 的项目文件已经被清空,但无论如何,这是个开源项目,so……

GoAgentX 为了方便吧可能,默认用的并不是 SS 主项目,而是一个延伸项目 shadowsocks-libev (实际上在插件的目录里面有三个版本的 SS,你可以在高级配置里任意切换,这里我们只使用还在更新维护的 ss-libev)所以,我们还是可以对其进行更新的。在 GoAgentX 上它的版本号还是2.3,而实际上这个却是 SS 的主版本号……?

考虑到编译是一件很麻烦的事情,我们选择从 Homebrew 里提取, brew 是 OS X 里类似 Linux 中的 apt-get 或者 yum 的包管理系统,如果你不知道它是什么,——来这里看看。

我们使用如下命令来安装 brew

注意

要安装 brew,你得先安装 Xcode。——就算你选择下载源码进行编译,也得需要 Xcode。

使用命令 brew install shadowsocks-libev 来安装它,然后就可以去 /usr/local/Cellar/shadowsocks-libev/2.3.0/bin 下把 ss-local 拷贝出来替换掉 /Applications/GoAgentX.app/Contents/PlugIns/shadowsocks.gxbundle/Contents/Resources/bin/libev/ss-local 啦!

另一个更新的办法

这里,感谢 xsharp 同学,他为我们更新 SS 客户端提供了新的思路,由于 SS-libev 版本其实已经安装到了你的系统当中,我们也可以让 G oAgentX 直接使用系统中安装的 SS 而不是它插件里的 SS ,这样连上边复杂的替换也省了:

找到 /Applications/GoAgentX.app/Contents/PlugIns/shadowsocks.gxbundle/Contents/Resources/bin/libev/ss-local ,把它删掉,然后使用如下命令创建一个空文档:

编辑这个文档,写入如下代码:

然后使用 chmod +x /Applications/GoAgentX.app/Contents/PlugIns/shadowsocks.gxbundle/Contents/Resources/bin/libev/ss-local 来给它加上可执行权限。

这样的话,gx就会调用系统的 SS 而不是自带的插件里的 SS了。以后更新,也不需要重复去拷贝文件了。

另外,如果你想要其他新的性能参数比如 一次性验证,那么就这样写:

收尾工作

为了让 GoAgentX 插件页面也能显示出正确的版本号(你要是不 care 这些细节,就可以不看这里了),我们修改如下文件:

在里边找到版本号字符串,修改为对应的最新版本即可:

这次是lbev的版本哦

这次是lbev的版本哦

更新 COW

我们来更新 cow,cow 也是一个开源项目,它能自动根据你的访问来判断网站是否被墙,如果被墙,则自动使用二级代理来访问,久而久之,cow 会根据你的浏览行为学习到各种被墙的网站,就好像自动生成的 gfwlist。以下是作者写的介绍:

COW 是一个简化穿墙的 HTTP 代理服务器。它能自动检测被墙网站,仅对这些网站使用二级代理。

我个人不推荐你在公共场合使用 cow,这一点我会再说。不过,对于要在 GoAgentX中使用 COW 的人来说(GoAgentX里真的很方便!)跟新下 COW 还是很有必要的。

首先,我们使用 curl -L git.io/cow | bash 来下载最新版本的 COW,对于 Install cow binary to which directory 这个问题,我们直接按回车保存它到当前目录;对于 Start COW upon login? (If yes, download a plist file to ~/Library/LaunchAgents) [Y/n] 这个问题要留意,我们目的在于提取cow程序文件,而不是直接安装,所以要输入 n来取消自动启动。

这时你的目录下(默认应该是 /~ )就有了 cow 的程序文件:

cow文件

cow文件

我们去 GoAgentX 的插件目录里(进入方法见上文),找到 COWService.gxbundle,用鼠标点击右键来“显示包内容”,具体的路径如下:

我们把此 cow 替换为彼 cow 即可。

收尾工作

为了让 GoAgentX 插件页面也能显示出正确的版本号,我们修改如下文件:

在里边找到版本号字符串,修改为对应的最新版本即可:

修改插件版本号

修改插件版本号

找不到 cow 版本?

更新 GoAgent

Goagent 这个博主不用,so…………新版变化挺大的,懒得搞了,给大家推荐个替代的xx-net

  • 集成 GoAgent、GoGoTest 等自动扫描 IP,省事省力
  • Web 界面,人性化交互,傻瓜易用
  • 内置了公共 appid, 方便新手
  • 方便易用的细节、细节提示

更新 Stunnel

Stunnel 也是一个非常不错的代理选项,GoAgentX 里附带的版本为 4.56,而最新的版本已经 5.22,我们在使用它之前也有必要来对它进行一下升级。

去官网下载最新版来编译是个不错的选项,不过过于麻烦,我们选择从 Homebrew 里提取。使用 brew install stunnel 来安装 stunnel,这样安装完整之后就可以在 /usr/local/Cellar/stunnel/5.22/bin 中找到 stunnel 的程序文件了!

我们把它复制到 /Applications/GoAgentX.app/Contents/PlugIns/StunnelService.gxbundle/Contents/Resources/bin/ 即可。

收尾工作

同样编辑对于的 /Applications/GoAgentX.app/Contents/PlugIns/StunnelService.gxbundle/Contents/Info.plist 文件来修改它的版本号:

修改插件版本号

修改插件版本号

 

本文由 落格博客 原创撰写:落格博客 » GoAgentX 的 后续 维护及使用

转载请保留出处和原文链接:https://www.logcg.com/archives/1296.html

About the Author

R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

Comments

  1. 请问brew install shadowsocks-libev时报错:需要安装prerequisite,安装到xz时提示cannot run C compiled programs,这个问题有解决办法吗?

          1. 真的哭了。。。sierra里GAX的SS不能用,别人说更新一下里面的SS插件就能用。。。结果只能滚回去shadowsocksX了。。。

  2. 直接修改app里面的内容,肯定是会破坏证书的,自然会一直提示联网……
    求一个2.3.7的源代码,我在网上貌似找不到,都是老版本的,感谢
    邮箱:
    NDA4NDg3ODMzQHFxLmNvbQ==

    1. 2.3.7我也没有源码,只有一个编译好的文件。这个文件本身就证书失效,一直提示联网,我用自己的证书重新给签名也不行。能不用还是不用了吧,goagentX网上没有最新的源码,它真的要离去了。现在我用surge mac,如果你用的话我可以把我的配置文件发你一份。 :)

      1. 谢谢~
        你可以用
        ‘codesign -v /Applications/GoAgentX.app’
        来检查一下原本的签名是否被破坏,如果没有问题则直接返回。

        ‘codesign -dvvvv /Applications/GoAgentX.app’
        来检查当前的签名信息,我的版本打开不会出现联网提示,一般出现这个提示很大可能就是bundle被(恶意?)修改了。

        我有surge mac,但是它没有ssh 代理,这个代理可以利用公司公网ssh搭梯子进公司内网,vnc自己的电脑什么的很方便。对我来说goagentx确实是无可替代的。

        1. 是的,没有任何问题,可能我这个版本就是个测试版,因为网上现在也找不到这个版本了。ssh的化可以直接用命令或者脚本啊~我不用那个命令,因为用来翻墙的话会被检测出来然后屏蔽的。我用ssh都是直接命令行配置:) surge专门用来翻墙。而且,我还专门为此维护(其实现在是借鉴前辈的列表了)了一个翻墙白名单规则,十分好用哈哈。

          1. 因为我们公司有很多内部web服务,所以用ssh转socks 代理就可以直接用浏览器打开咯,而且在命令行用proxychains4g可以直接从内部git pull出来,而不用先git clone到中间服务器再scp出来,省了不少时间,其实都是个人需求吧。

            我的白名单是从这里pull的:
            https://github.com/breakwa11/gfw_whitelist
            每天schedule git pull 可以实现自动更新,如果有自己定义的网站话可以加入自动shell脚本merge 一下,不用自己维护。

            话说你的博客真不赖,作为一个不会html的开发者觉得太酷了。

          2. 那你可以看看我的白名单https://github.com/R0uter/gfw_domain_whitelist 我这个博客用Wordpress搭建的,我也不会,顶多安装一些插件优化一下,倒是后台做了不少优化,哈哈。
            如果我是你,我就直接vpn了……嘿嘿。简单又省事。

          3. XD 果酱果酱,我也是按照大神的结果改改格式罢了。我本来自己写了一个爬虫的,但由于已经有前人了我就取消了那个爬虫项目转而使用了大神这个,列表已经很全面啦。现在的问题就是怎么找到方法来根据网站的流行程度缩减列表体积。

          4. 负载均衡的点子不错,但是会降低可用性,连不上的几率大大增加……可以想想怎么提高可用性,要是能周期性自动测试代理列表并选出丢包率最小的作为默认pac就好了。

          5. 确实,当时给破娃酱提交的时候她也这么说的,尤其是几条线路速度不一样的时候,用起来会非常的……2.可惜我JavaScript并不厉害,我考虑考虑将来继续探索。其实现在我自己并不用这个PAC,只是用了白名单列表,之前用的时候后来也把负载均衡给关了用的嘿嘿。等有空了我试试看。

        1. 是的呢……好在现在用leve4可以代替——哦,可能还得等几个月吧才能支持ss。如果过段时间它不支持,我会考虑自己写一个管理器,毕竟我也在用这个的:)

  3. 如果要 ss-local 支持 OTA (-A), 有和思路?新建一个名为 ss-local 的 shell 文件? 在该 shell 中加上 -A 参数,然后其他参数都转发到原始的 ss-local。像这样:
    #!/bin/bash
    ss-local $@ -A

    1. 我去想想看,有必要使用一次性验证?你说的这个偷天换日的方法可能得写一个二进制而不是shell,如果有成果,我会再次回复你的:)

        1. 哈哈,你这个方法竟然能够被GoAgentX关闭,不过就直接调用了系统安装的SS客户端而不是gx插件里的了……也好,这样省得每次升级都要拷贝一遍啦!
          ——看起来我的服务商都没有支持一次性验证呢。

    2. =。=好吧,高级功能不能使用模板来做,我用swift写了一个壳,理论上能支持所有参数了,缺点是必须手动关闭。我猜你的ss服务器是自己搭建的?我测试了下我的服务商都没有支持这个功能呢=。=|||总之,还是那句话“毕竟是能用的。”……

    1. 我去研究了下,很遗憾,虽然meow天生完全支持cow,但唯一一点遗憾的是meow的配置文件目录改名为 .meow了,而gx配置cow的目录是 .cow,所以……我们没办法了。

    2. 如果非要配合 MEOW 的话,其实可以直接做为 MEOW 的二级代理,例如起一个 3proxy 服务,然后配置文件写死成 MEOW 的 IP 和端口。只是没什么意义,因为 Surge 以及类似的开源工具,同样可以做 MEOW 的二级代理,而且效果更好,并且要么商业化了要么开源,应该大部分情况下都能替代不再维护的 GoAgentX 了。

    3. 刚看到 xsharp 的方法,完全可以用在 MEOW 上,直接把COW的Bundle里写个映射到 MEOW 的 shell 脚本,再 ln -s .cow .meow 即可,亲测有效

  4. 还得先安装Xcode?话说没编译好的能直接替换的么?mac文件浏览器各种蛋疼,乔布斯当初就没想让用户直接操作文件,ios更是极端

    1. 没编译的程序当然就不能用啦,不过你可以尝试python版本,这样你得在配置里切换一下才行。你试试:)
      或者,你也可以考虑去找找预先编译好的~

  5. 我发现一个问题就是, 我更新COW到0.9.6的版本没问题,但是更改了Info.plist文件里面的版本号,重启开机自启动的时候竟然就没有COW的服务了,非得改回0.9.3才正常

    1. 目前我没有遇到这个问题,可能是我更新后就没有继续使用cow吧……现在我去配置试试看,我的是0.9.6,如果重现问题,我会回来告诉你的:)

    2. 哈哈哈~~我没遇到这个问题,cow的自动探测我不喜欢,但是它的hash负载均衡很给力啊!我开了三个线路然后负载均衡,从此打开网页都是搜搜的。抓了下包,打开Twitter同时好走俩个线路,真是完美!

      1. 不行,我反复试过很多次,就是在Bundles标签页可以看到COW的版本是0.9.6没问题,但是在服务标签页点+号添加就找不到COW的选项,要不你把你的程序打包发给我试下

        1. 你是不是在配置里把cow给禁用了所以看不到?我现在又用回了cow配合自己手动写的列表……但还是不太好使,有时候cow还是会把黑名单的域名给直连,唉。

          1. 我感觉这个cow有时候确实有点问题,特别是用cow连接shadowsocks的时候速度不如原生的好,不知道你有没有GoAgentX2.3.7的源码,我想自己来维护

    1. 目测出了libev以外别的都没什么用,你就算删了也ok,它根本不调用啊……当然我也就没有去了解了。理论上你直接下载最新的来替换就好了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注