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 伺服器轉發至目的伺服器，接收數據時方法也類似 。由於伺服器端軟體基本相同，該中轉伺服器既可以是使用者自行架設的伺服器，也可以是由其他人架設的開放伺服器。

因為中國大陸的防火長城難以完全封鎖，或出於其他考慮不能完全封鎖此 Google 服務，到目前為止幾經更新的 GoAgent 仍舊可以正常使用，儘管在 2014 年 5 月底開始，Google 又一次遭到中國政府防火長城的大規模封鎖，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 被刪除一事發表評論，對中國政府針對翻牆軟體作者的打擊表示了強烈的譴責。

## 注釋

## 參考資料

## 外部連結

* GoAgent 在 GitHub 的首頁（已刪除）
* GoAgent 在 GitHub 的代碼庫（已刪除）
* goproxy（已刪除）
* XXNet 在 Github 上的首頁 （頁面存檔備份，存於網際網路檔案館）
* Xndroid 在 Github 上的首頁 （頁面存檔備份，存於網際網路檔案館）