GoAgent (简体中文)
GoAgent 是使用 Python 和 Google App Engine SDK 编写的免费代理软件,利用 Google App Engine 充当代理服务器。
GoAgent 的运行原理于其他代理工具基本相同,其借由 Google App Engine 的服务器作为中传,将数据数据包后传送至 Google 服务器,再由 Google 服务器转发至目的服务器,接收数据时方法也类似。相对其他代理工具而言 GoAgent 要稳定许多。
Contents
安装
官方软件源已收录 goagent[broken link: archived in aur-mirror],直接用 pacman 安装即可.
配置
服务器端
申请 Google Appengine 并创建 appid 。具体教程可参考此。
上传(使用root用户,否则会出现权限不够的问题):
# python2 /usr/share/goagent/server/uploader.py
执行时会要求您再输入 appid ,请保持与 proxy.ini
中已有的一致;接着还要输入 Google 邮箱及密码。
至此,代理服务器 127.0.0.1:8087 已搭建完毕。现在以 Chrome/Chromium 为例,示范使用代理服务器的方法。
客户端
打开 /etc/goagent
(默认情况下该文件为空), 增加类似下面的段落:
[gae] appid = your_appid password = yourpassword
修改 your_appid
为您所申请的 appid。如果您申请了多个 appid 用于负载均衡, 用竖线 | 分隔多个id (不含空格).
如果您使用的服务端没有配置密码, 可以省略掉 password =
开头的一整行.
goagent 3.1.5-1 新增 dnsproxy 功能, 基本配置依然是修改 /etc/goagent
文件, 加入类似以下内容:
[dns] enable = 1 listen = 127.0.0.1:5353
如果希望 DNS 服务跑在 53 端口, 需要使用 root 用户运行服务. 新增 /etc/systemd/system/goagent.service.d/use_root.conf
文件, 加入以下内容即可:
[Service] User=root
Chrome/Chromium
请安装 SwitchySharp 插件,接着导入该设置。可参考该扩展提供的图解流程。
打开设置-管理证书-授权中心-Authorities,导入 /usr/share/goagent/local/CA.crt
,弹出窗口的三条选项均勾选。
亚全局
在 Unix 和 GNU/Linux 中,大多 HTTP 应用程序均支持调用环境变量 http_proxy
和 https_proxy
进行代理,就像 lynx、 wget 和 curl,甚至也包括了 Chromium (简体中文) 和 git (简体中文)。此外该环境变量的大小写其实并没有统一标准,有个别程序就只支持全大写的环境变量。所以为方便起见,直接在 ~/.bash_profile
或 ~/.zshenv
添加以下即可:
export http_proxy=http://127.0.0.1:8087/ export https_proxy=$http_proxy export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$HTTP_PROXY
再执行以下命令,以导入证书进 Arch Linux。至此,就可以实现 Arch Linux 亚全局代理:
# ln -s /usr/share/goagent/local/CA.crt /etc/ca-certificates/trust-source/anchors/GoAgent.crt # trust extract-compat
2014-12-11 官方发布新闻证书导入采用新方法。若在此之前导入过证书,请进行清理:
# rm -fr /usr/share/ca-certificates/goagent # rm -fr /etc/ca-certificates/conf.d
运行
以 daemon 形式运行 (推荐)
# systemctl start goagent
若想开机自启动,执行:
# systemctl enable goagent
屏蔽日志输出
如果不想让 GoAgent 的输出信息进入日志,可以通过屏蔽 goagent.service 里的对应行解决,方法如下:
1. 创建目录 /etc/systemd/system/goagent.service.d
2. 创建文件 /etc/systemd/system/goagent.service.d/nostdout.conf
, 写入如下内容:
[Service] StandardOutput=null
日志输出至TTY
如果不想让 GoAgent 的输出信息进入日志,但是又想得到 GoAgent 的运行情况,可以通过修改 goagent.service 里的对应行解决,方法如下:
1. 创建目录 /etc/systemd/system/goagent.service.d
2. 创建文件 /etc/systemd/system/goagent.service.d/totty.conf
, 写入如下内容:
[Service] StandardOutput=tty StandardError=tty TTYPath=/dev/ttyX #X为数字,ttyX不能正在被使用,推荐为1-12之间的整数,用Ctrl+Alt+FX切换至 #TTYVTDisallocate=yes #若需要在启动前清理所在TTY的虚拟终端,取消本行前的注释
3.运行:
# systemctl daemon-reload && systemctl restart goagent
手动运行(不推荐+不支持)
由于不明原因,总有个别用户无法成功以 daemon 形式运行GoAgent,可改试手动运行:
$ sudo -u nobody python2 /usr/share/goagent/local/goagent
若是在更新后发生问题,可尝试清空/usr/share/goagent/local/certs
目录,甚至卸载并手动删除/etc/
和/usr/share/
下的有关文件,然后重新安装和配置。
疑难解答
Firefox 31.0 及以上版本提示安全连接失败:证书包含未知的关键扩展。
从 Firefox 31.0 开始默认使用新的 mozilla::pkix 为证书验证库。GoAgent 证书已被证实和此证书验证机制不兼容。新证书认证会导致提示“安全连接失败:证书包含未知的关键扩展。 (错误码: sec_error_unknown_critical_extension)”。解决的方法有两种,推荐使用解决方法 1 。
解决方法 1 (推荐)
重新生成新的 GoAgent 证书
取得 Root 权限并执行以下命令:
# rm /usr/share/goagent/local/CA.crt # rm -rf /usr/share/goagent/local/certs # systemctl restart goagent
在 Firefox 中导入新证书
在 Firefox 中点击右上角的菜单按钮(三道杠),在弹出的菜单中点击“首选项”(齿轮图标),打开首选项页面,点击"高级"-"证书"-"查看证书“,弹出一个新窗口,点击”证书机构“,在列表中找到"GoAgent CA"项并选中该项,点击"删除或不信任",即完成删除原来的证书。点击"导入",弹出文件选择窗口,进入目录 /usr/share/goagent/local/ ,选择文件 CA.crt 并点击打开,即完成导入新证书。点击确定关闭弹出窗口,重新启动 Firefox 即可。
解决方法 2
在 Firefox 的地址栏上输入 about:config ,在输入框中输入 security.use_mozillapkix_verification ,在下面的列表中找到该项并双击修改为 false 。
参阅
- GoAgent 在 Google Code 的主页
- GoAgent 在 GitHub 的主页
- 两位开发者的 Twitter 帐号:@hewigovens,@phuslu
- 讨论亚全局代理的 Email List