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 連線，從而提高連線成功率和連線速度。

缺陷

3.1 身份暴露風險

GoAgent 依賴 Google App Engine 伺服器，在傳送請求、獲取網頁內容的時候，請求報頭中的 User Agent 會帶有唯一的 AppID，存在暴露身份資訊的風險。

3.2 證書風險

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+。

5.1 XX-Net

XX-Net 是一個免費的桌面應用程式，是基於 GoAgent 的一個 GUI 圖形介面程式，使用起來簡單方便，減少了 GoAgent 繁瑣的設定步驟，為被審查區域的使用者提供快速、可靠和安全的開放網際網路訪問。它使用 GAE 代理伺服器透過防火牆。可以自動掃描 IP。XX-Net 是 github 上的一個專案。安卓系統則有衍生專案 Xndroid。

5.2 GreatAgent

此專案旨在提供公共而開放的服務端供普通使用者使用，有 GreatAgent-ga 與 GreatAgent-wp 兩個版本，分別對應 GoAgent 與 WallProxy 這兩個常用的代理程式；除此之外，還提供配置好的 Firefox，免去了使用者自行配置、除錯的麻煩。

目前，GreatAgent 已部署 830 個適用於 GoAgent 的 AppID 和 1210 個適用於 WallProxy 的 AppID，兩者在功能上有所不同。GreatAgent-ga 版本僅支援 Google 的搜尋和 YouTube 的線上視訊，並且不支援中國大陸國內網站的訪問；而 GreatAgent-wp 則沒有上述限制，被稱為「電影 AppID」，意指其連線速率較快，但是抗幹擾能力不佳。

5.3 GoAgent GUI

GoAgent GUI 是一個 GoAgent 圖形化版本。

5.4 GoAgent+

Smartladder 是一個內建 4947 個 AppID 的 GoAgent 的打包版本集，包括單獨的 GoAgent 打包以及作者提供的帶該工具的瀏覽器便捷版。

5.5 AppID 列表

由於 GAE 有流量限制和應用數量限制，所以有志願者收集和維護了開放的 AppID 的列表供大家使用，這樣，使用者便可以在不花錢的情況下，透過類似負載均衡的機制繞過流量限制。

5.6 瀏覽器

有些民間志願者將 GoAgent 配置好，並將其與 Chromium 等開源的瀏覽器整合，製作成整合包，從而做到一鍵啟動，例如天行瀏覽器（Xskywalker）、暢遊無限瀏覽器等。

5.7 楓葉香蕉

楓葉香蕉是一個用 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 被刪除一事發表評論，對中國政府針對翻牆軟體作者的打擊表示了強烈的譴責。