GoAgent

GoAgent是使用跨平台语言Python开发、基于GPL自由软件协议的代理软件。它利用Google App Engine（GAE）的服务器充当代理。该软件在中国大陆被广泛用于突破大陆官方建立的防火长城（GFW），以浏览被封锁的内容。

GoAgent分为两个部分，一部分是需要部署到GAE上的服务器端软件，另一部分是用户电脑上运行的客户端软件。用户需要将服务器端软件上传到GAE中，然后通过客户端软件与其连接，获取被封锁的内容。为方便用户使用，GoAgent也提供了自动部署工具。

从2015年8月以后，GoAgent已停止维护，并被开发者删除。GoAgent作者 phuslu 于2015年3月开始开发另一个翻墙软件GoProxy，现已删除。

## 特性

由于使用Python开发，GoAgent支持多种操作系统，例如Microsoft Windows、OS X、iOS、Linux（包括基于Linux开发的移动操作系统、路由器固件，如Android和OpenWrt）。

GoAgent的其他特性如下：

- 支持作为本地DNS服务器使用。
- 支持代理自动配置（PAC）。
- 支持在数据传送过程中采用HTTPS加密连线。
- 支持Google App Engine，PHP和PaaS三种模式。
- 自2.1.17版本起支持在通信时加入混淆数据以避免数据封包在传输时受到特征过滤。
- 允许用户选择使用Google在北京、香港或台湾数据中心的IP地址，或者Google的IPv6地址（Google App Engine位于美国的数据中心在中国大陆被防火长城封锁）。
- GoAgent自3.0.6版开始可选支持RC4加密选项。

## 运行原理

GoAgent的运行原理与其他代理工具基本相同，使用特定的中转服务器完成数据传输。它使用Google App Engine的服务器作为中传，将数据封包后传送至Google服务器，再由Google服务器转发至目的服务器，接收数据时方法也类似。由于服务器端软件基本相同，该中转服务器既可以是用户自行架设的服务器，也可以是由其他人架设的开放服务器。

因为中国大陆的防火长城在技术上难以完全封锁所有谷歌IP地址，或出于其他考虑不能完全封锁此Google服务，若能找到未被封的谷歌IP地址，到目前为止几经更新的GoAgent程序仍旧可以正常使用。尽管在2014年5月底开始，Google遭到中国政府防火长城更大规模的封锁，其服务器的IP地址几乎已被封锁殆尽，因此大部分Google服务今日已不能从中国大陆正常访问。

GoAgent可以通过HTTP和HTTPS两种方式连接Google服务器，用户可以根据自己的网络情况酌情选择。

由于防火长城的屏蔽策略调整，Google IP被悉数封锁，因而该工具的破网效率已大不如前。但是由于Google采用了任播技术，只要用户能够自行找到可用的Google IP（例如使用GoGoTester），那么GoAgent就可以通过用户找到的IP直接与Google连接，从而提高连接成功率和连接速度。

## 缺陷

### 身份暴露风险

GoAgent依赖Google App Engine服务器，在发送请求、获取网页内容的时候，请求报头中的User Agent会带有唯一的AppID，存在暴露身份信息的风险。

### 证书风险

- GoAgent 在启动时会尝试自动往系统的可信根证书中导入一个名为“GoAgent CA”的证书。由于这个证书的私钥是公开的，导致任何人都可以利用这个私钥来伪造任意网站的证书进行 HTTPS 中间人攻击。即使在不开启 GoAgent 时，这种攻击的风险仍然存在。换而言之，一旦这个证书被导入，攻击者可以用此绕过几乎所有网站的 HTTPS 保护。
- 在GoAgent 3.2.1版本之后这个漏洞得以修复。
- GoAgent 本身对 TLS 证书的认证存在问题，而且默认时不对证书进行检查，这导致在使用 GoAgent 时存在 HTTPS 中间人攻击的风险。

## 注意事项

由于GoAgent所使用的Google App Engine被认为可以作为开放式代理，因此其使用的美国加利福尼亚州山景城Google数据中心的出口IP地址段会受到部分网站的封锁或限制（如对维基百科只能浏览而不能编辑），以防止恶意攻击。

## 衍生项目

GoAgent发布以后，民间的开发者又发起了众多的衍生项目，以方便用户使用GoAgent，像是XX-Net和GreatAgent和GoAgent+。

### XX-Net

XX-Net是一个免费的桌面应用程序，是基于GoAgent的一个GUI图形界面程序，使用起来简单方便，减少了GoAgent繁琐的设置步骤，为被审查区域的用户提供快速、可靠和安全的开放互联网访问。它使用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”，意指其连线速率较快，但是抗干扰能力不佳。

### 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天.。

在许东被捕后，GoAgent 的主要贡献者之一phus.lu 在其Twitter中发表声明，称其“从未在 GoAgent 获得直接或间接的经济利益，也未接受过任何境外和境内组织的捐助；从未提供基于 GoAgent 的公共服务和政治看法”。phus.lu 解释到，在许东被捕后发表声明，是为了“以防万一”。

## 停止维护

2015年8月25日，在Shadowsocks作者迫于警方压力删除其项目之后，GoAgent的开发者也删除了该项目。

GoAgent项目删除不久，GitHub即遭到了来自中国的DDoS攻击。开发者普遍认为此次攻击与中国政府有关。2015年8月28日，电子前哨基金会针对Shadowsocks和GoAgent被删除一事发表评论，对中国政府针对翻墙软件作者的打击表示了强烈的谴责。

## 基本资料

- 开发者： phus.lu, HewigOvens
- 操作系统：跨平台（基于Python）
- 类型：代理服务器
- 许可协议：GNU GPL v2