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