GoAgent
GoAgent是使用跨平台语言Python开发、基于GPL自由软件协议的代理软件。它利用Google App Engine(GAE)的服务器充當代理。该软件在中国大陆被廣泛用于突破大陆官方建立的防火长城(GFW),以瀏覽被封鎖的內容。
GoAgent Beta界面 | |
開發者 | phus.lu, HewigOvens |
---|---|
最終穩定版本 | 3.2.3(2014年11月22日[1])[±] |
源代码库 | |
操作系统 | 跨平台(基于Python) |
类型 | 代理服务器 |
许可协议 | GNU GPL v2 |
网站 | goagent |
GoAgent分为两个部分,一部分是需要部署到GAE上的服务器端软件,另一部分是用户电脑上运行的客户端软件。用户需要将服务器端软件上传到GAE中[lower-alpha 1],然后通过客户端软件与其连接,获取被封锁的内容。为方便用户使用,GoAgent也提供了自动部署工具。
从2015年8月以后,GoAgent已停止维护,并被开发者删除。GoAgent作者 phuslu 于2015年3月开始开发另一个翻墙软件GoProxy,现已删除。
特性
由于使用Python开发,GoAgent支持多种操作系統,例如Microsoft Windows、OS X、iOS、Linux(包括基于Linux开发的移动操作系统、路由器固件,如Android和OpenWrt)[2]。
GoAgent的其他特性如下:
運行原理
GoAgent的運行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。它使用Google App Engine的服务器作爲中傳,將數據封包後傳送至Google服务器,再由Google服务器轉發至目的服务器,接收數據時方法也類似[3] 。由于服务器端软件基本相同,该中转服务器既可以是用户自行架设的服务器,也可以是由其他人架设的开放服务器。
因为中國大陸的防火长城难以完全封锁,或出于其他考虑不能完全封锁此Google服務,到目前为止幾經更新的GoAgent仍旧可以正常使用,儘管在2014年5月底開始,Google又一次遭到中國政府防火長城的大規模封鎖,Google首頁至今仍不能從中國大陸正常存取。[4][5]
GoAgent可以通过HTTP和HTTPS两种方式连接Google服务器,用户可以根据自己的网络情况酌情选择。
由于防火长城的屏蔽策略调整,Google IP被悉数封锁,因而该工具的破网效率已大不如前。但是由于Google采用了任播技术,只要用户能够自行找到可用的Google IP(例如使用GoGoTester),那么GoAgent就可以通过用户找到的IP直接与Google连接,从而提高连接成功率和连接速度[6]。
缺陷
身份暴露风险
GoAgent依赖Google App Engine服务器,在发送请求、获取网页内容的时候,请求报头中的User Agent会带有唯一的AppID[7],存在暴露身份信息的风险[8]。
证书风险
- GoAgent 在启动时会尝试自动往系统的可信根证书中导入一个名为“GoAgent CA”的证书。由于这个证书的私钥是公开的,导致任何人都可以利用这个私钥来伪造任意网站的证书进行 HTTPS 中间人攻击。即使在不开启 GoAgent 时,这种攻击的风险仍然存在。换而言之,一旦这个证书被导入,攻击者可以用此绕过几乎所有网站的 HTTPS 保护。
- 在GoAgent 3.2.1版本之后这个漏洞得以修复。
- GoAgent 本身对 TLS 证书的认证存在问题,而且默认时不对证书进行检查,这导致在使用 GoAgent 时存在 HTTPS 中间人攻击的风险。[9]
注意事项
由於GoAgent所使用的Google App Engine被认为可以作为开放式代理,因此其使用的美國加利福尼亞州山景城Google數據中心的出口IP地址段会受到部分網站的封鎖或限制(如对維基百科只能瀏覽而不能編輯),以防止恶意攻擊。
衍生项目
GoAgent发布以后,民间的开发者又发起了众多的衍生项目,以方便用户使用GoAgent,像是XX-Net和GreatAgent和GoAgent+。
XX-Net
XX-Net是一个免费的桌面应用程序,是基于GoAgent的一个GUI图形界面程序,使用起来简单方便,减少了GoAgent繁琐的设置步骤,为被审查区域的用户提供快速、可靠和安全的开放互联网访问。它使用谷歌App Engine(GAE)代理服务器通过防火墙。可以自动扫描IP。XX-Net是github上的一个项目。安卓系统则有衍生项目Xndroid。
GreatAgent
此項目旨在提供公共而開放的服務端供普通用戶使用,有GreatAgent-ga與GreatAgent-wp兩個版本,分別對應GoAgent與WallProxy這兩個常用的代理程式;除此之外,還提供配置好的Firefox,免去了用戶自行配置、調試的麻煩。
目前,GreatAgent已部署830個適用於GoAgent的AppID和1210個適用於WallProxy的AppID,兩者在功能上有所不同。GreatAgent-ga版本僅支援Google的搜尋和YouTube的在線視訊,並且不支援中國大陸國內網站的訪問;而GreatAgent-wp則沒有上述限制,被稱為「電影 AppID」,意指其連線速率較快,但是抗干擾能力不佳。[2]
GoAgent GUI
GoAgent GUI是一个GoAgent图形化版本。
GoAgent+
Smartladder是一个内置4947个AppID的GoAgent的打包版本集,包括单独的GoAgent打包以及作者提供的带该工具的浏览器便捷版。
AppID列表
由于GAE有流量限制和应用数量限制,所以有志愿者收集和维护了开放的AppID的列表供大家使用,这样,用户便可以在不花钱的情况下,通过类似负载均衡的机制绕过流量限制。
浏览器
有些民间志愿者将GoAgent配置好,并将其与Chromium等开源的浏览器整合,制作成整合包,从而做到一键启动,例如天行浏览器(Xskywalker)、畅游无限浏览器等。
枫叶香蕉
枫叶香蕉是一个用Delphi语言编写的,基于GoAgent、WallProxy等代理工具的代理客户端。
2014年11月4日,北京警方以“涉嫌寻衅滋事”为由抓捕了其主要维护者许东(OnionHacker)。据报道许东被抓捕和其推特发布支持占中言论有关,以及其推特发布的追求自由言论是其身陷囹圄的重要因素。之后,网络著名维权人士“超级低俗屠夫”在其推特发起募款行动,为其筹集律师费用。在民间维权力量积极活动和施压下,许东于2015年1月30日离开北京第一看守所,恢复自由,总共被关押89天.[10]。
在许东被捕后,GoAgent 的主要贡献者之一phus.lu 在其Twitter中发表声明,称其“从未在 GoAgent 获得直接或间接的经济利益,也未接受过任何境外和境内组织的捐助;从未提供基于 GoAgent 的公共服务和政治看法”。phus.lu 解释到,在许东被捕后发表声明,是为了“以防万一”[11]。
停止维护
2015年8月25日,在Shadowsocks作者迫于警方压力删除其项目之后,GoAgent的开发者也删除了该项目。[12]
GoAgent项目删除不久,GitHub即遭到了来自中国的DDoS攻击。开发者普遍认为此次攻击与中国政府有关。[13]2015年8月28日,电子前哨基金会针对Shadowsocks和GoAgent被删除一事发表评论,对中国政府针对翻墙软件作者的打击表示了强烈的谴责。[14]
注释
- 也可以选择使用已经由其他人部署的GoAgent服务器,此情况下则不需要上传也不需要注册账号。
參考資料
- GoAgent更新历史(简体中文)
- . [2013-07-24]. (原始内容存档于2014-09-25) (中文(中国大陆)).
- . [2012-08-24] (中文(中国大陆)).
- Dan Levin. . 紐約時報中文網. 2014-06-03 [2014-09-24]. (原始内容存档于2015-08-05) (中文).
- Keith Bradsher,Paul Mozur. . 紐約時報中文網. 2014-09-23 [2014-09-24]. (原始内容存档于2020-08-10) (中文).
- Tiank. . FreeBuf. [2016-01-06]. (原始内容存档于2015-10-29).
- . [2016-01-06]. (原始内容存档于2016-04-27).(英文)
- . [2013-05-05]. (原始内容存档于2013-05-07).(简体中文)
- . [2016-01-06]. (原始内容存档于2020-06-17).
- 马平. . 自由亚洲电台. 2014-11-11 [2014-11-13]. (原始内容存档于2020-05-02).
- . 开源中国. 2014-11-13 [2014-11-13]. (原始内容存档于2014-11-13).
- . Solidot奇客. (原始内容存档于2016-03-06).
- Catalin Cimpanu. . Softpedia. 2015-08-29 [2016-01-07]. (原始内容存档于2016-05-06).(英文)
- O'Brien, Danny. . 电子前哨基金会. [2016-05-28]. (原始内容存档于2016-06-24) (英语).(中文翻译)
外部链接
維基教科書中的相關電子:GoAgent |
- GoAgent在GitHub的主页(已删除)
- GoAgent在GitHub的代码库(已删除)
- goproxy(已删除)
- XXNet在Github上的主页 页面存档备份,存于
- Xndroid在Github上的主页 页面存档备份,存于