Ubuntu/Liunx 下 GoAgent 翻墙教程

GoAgent 翻墙成功

GoAgent 翻墙成功效果

因为在 Github 上下载的时候实在无法忍受 24 kb/s 的龟速……查了下资料, Linux 下好像比较常用 ssh 翻墙,但对我来说还是 GoAgent 比较熟悉,于是折腾了一下,最终搞定。上教程。

一、准备工作

1、申请 AppID 和 Win 下相同,本文假定已经成功申请到至少一个 AppID ,方法在此不再详述,需要的话请访问:http://blog.howgo.info/archives/3246.html

2、Ubuntu 已经自带 Python ,但是建议还是确认一下。终端 sudo apt-get install python

3、下载 GAE for Linux https://developers.google.com/appengine/downloads?hl=zh-CN

4、下载 GoAgent ,Win 和 Linux 是通用的, Linux 下直接用 .py 脚本运行 https://code.google.com/p/goagent/

二、上传服务端

如果已经在 Win 下或者其他时候上传过 GoAgent 服务端可跳过此步,无需重新上传。在此重新上传不影响其他平台使用。

1、先解压 GAE 和 GoAgent ,将 goAgent 放到 GAE 的 google_appengine 目录下

2、进入 GoAgent目录/server/python ,编辑 app.yaml ,填入 AppID 和 Version (默认是1)

3、进终端,使用  CD 命令进入你的 GAE 目录,然后激活位于你的 GoAgent 目录的上传脚本。

cd [GoAgent目录]/server
python uploader.zip

或者使用Python的内置同步脚本:

sudo python appcfg.py update [GoAgent目录]/server/python

随后在终端填入你的email和密码就能上传了。

三、配置客户端环境

1、安装 Gevent (非必须组件,若后面遇到问题可尝试安装):

sudo apt-get install python-dev curl -L -O https://github.com/python-greenlet/greenlet/archive/0.4.0.tar.gz && tar xvzpf 0.4.0.tar.gz && cd greenlet-0.4.0 &&
sudo python setup.py install curl -L -O https://github.com/downloads/surfly/gevent/gevent-1.0rc2.tar.gz && tar xvzpf gevent-1.0rc2.tar.gz && cd gevent-1.0rc2 &&
sudo python setup.py install

2、要正常使用gtk托盘以在托盘区显示图标,需要安装以下软件包(按需要选择):

sudo apt-get install python-appindicator
sudo apt-get install python-vte

四、配置客户端

1、在 GoAgent 的 local 目录中,有一个 proxy.ini 文件,将你的 AppID 填入

2、终端 CD 进 GoAgent 目录,激活客户端,如:

cd [GoAgent目录]/local
sudo python proxy.py

3、也可以赋予 proxy.py 可执行权限之后直接双击 proxy.py 运行,在 proxy.py 上面右击,属性的权限中勾选允许以程序执行文件即可。

4、运行 goagent-gtk.py 可以使用 GTK 托盘方式即在右上角显示小图标运行 GoAgent 。

五、其他问题

1、配置好 GoAgent 后使用方法同与Win下相同,只需要浏览器翻墙的话推荐 Chromium + SwitchProxy ,具体方法参见第一步中给出的申请 AppID 教程结尾处。

2、如果不止在浏览器中翻墙,还需要设置全局代理,可以访问 Ubuntu 系统设置 > 网络 > 代理 在http和https连接处填写 GoAgent 的本地端口地址 127.0.0.1:8087 ,然后点击应用即可。

如果桌面环境没有提供全局代理的设置,也可以手动编辑 /etc/profile 文件,在其中加入:

# 分别指定 HTTP HTTPS FTP 协议使用的代理服务器地址
http_proxy= 127.0.0.1:8087
https_proxy= 127.0.0.1:8087
ftp_proxy= # GoAgent 不支持 FTP
# 设置不使用代理的网址或者IP,用逗号分隔
no_proxy= 127.0.0.1, 192.168.1.1
# 设置环境变量
export http_proxy https_proxy ftp_proxy no_proxy

3、访问部分网站提示证书不受信任问题与 Win 下相同。解决方法是: Chromium 首选项 > 高级选项 > 管理证书,在 授权中心 导入 GoAgent/local 目录下的 CA.crt 证书,注意不要导入到 服务器 ,否则不起作用。在 授权中心 找到 GoAgent CA 修改信任设置为全部选中,其他浏览器相同。重启浏览器生效。

4、启动后似乎会自动创建桌面图标,如果没有,可以尝试以下办法(别忘了更改为对应路径):

在桌面新建一个空白文档,命名为 GoAgent.desktop ,然后使用 gedit 或其他文本编辑器打开,然后输入:

[Desktop Entry]
Type=Application
Name=GoAgent
Comment=GoAgent Start
Categories=Network;Proxy;
Exec=sudo python [GoAgent目录]/local/goagent-gtk.py
Icon=[GoAgent目录]/local/goagent-logo.png
Terminal=true
StartupNotify=true

这是唯一一种可以和Win下一样正常显示代理窗口的方法,不过每次都要输入一遍账户密码。也可以不让 GoAgent 在终端显示,只需要将 Terminal=true 改成 Terminal=false 。最后别忘了更改一下权限:

sudo chmod 777  [GoAgent目录]/local/proxy.py

58 thoughts on “Ubuntu/Liunx 下 GoAgent 翻墙教程

  1. 唔,订正了一些错误。这篇应该是目前最详细的教程了吧。刚照着折腾了一遍的说……

  2. 运行 goagent-gtk.py 出现如下错误:

    “
    Traceback  ( most recent call last ) :
    File "proxy.py" , line 2522, in 
        main()
    File "proxy.py" , line 2493, in main
        CerUtil.check_ca()
    File "proxy.py" , line 2522, in check_ca
        ***************************
    
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 18: ordinal not in range(128)
    Exception KeyError(147449452,) in  ignored
    "

    请问应该怎么解决,,,感谢!

        • 兄弟,这个问题解决了么,我也是这个问题啊。
          你是怎么解决的啊?
          谢谢!貌似不是下载问题/

          • 这个问题是因为 Python 环境的默认编码和文件编码不同造成的,解释器在运行时需要把文件编码转为 Unicode 再运行。

            可以在终端进入 Python 命令行后用以下代码查看环境默认编码,然后将出错的文件使用此编码保存:

            import sys
            print sys.getdefaultencoding()

            或者如果知道出错脚本的编码,试试编辑一下那个脚本,在最顶上加入以下三行:

            import sys
            reload(sys)
            sys.setdefaultencoding('utf-8') #将 utf-8 改为脚本的编码
            • 开始我也以为是下载损坏了。。。刚刚照你说到把代码加到proxy.py就好了。
              不过为什么你没有问题?
              还有google_appengine SDK 起作用了没有啊? 把goagent放到他目录下就起作用了?

              • 不是很清楚,估计系统的语言环境什么的配置影响到了编码吧……

                google_appengine 这玩意儿只是上传时需要的,如果已经上传好了服务端完全不需要…… 所以说上传后 GoAgent 放在哪都行。

  3. 这篇是从无到有的配置啊,我本来想找设置全局goa,你如果从Github下载那是需要全局配置的了?

    • 顺便说一下,blog做得挺好看的,大叔年龄翻你一倍还多了,独立域名技术blog还在酝酿脑子里。

    • 唔 …… 抱歉没有听明白意思,是说设置系统全局代理的办法么?如果是的话,刚才更新了一下文章 5.2 设置全局代理的部分,可以参考一下的说。

      谢谢夸奖呢,一起加油吧~

  4. 我用了楼主说的,在proxy.py最上面加了下面几句,

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8') #将 utf-8 改为脚本的编码

    然后报了下面错误: SyntaxError: Non-ASCII character '\xe5' in file proxy.py

    然后我再在 proxy.py 文件最顶加上: #coding=utf-8 ,然后成功了。

    注意是 #coding=utf-8 ,而不是 coding=utf-8 ,很多人以为#是注释

  5. 你好,我在终端输入python proxy.py 后,显示如下
    Traceback (most recent call last):
    File “/home/chian/goagent/local/proxy.py”, line 2746, in
    main()
    File “/home/chian/goagent/local/proxy.py”, line 2723, in main
    server = LocalProxyServer((common.PAC_IP, common.PAC_PORT), PACProxyHandler)
    File “/usr/lib/python2.7/SocketServer.py”, line 419, in __init__
    self.server_bind()
    File “/usr/lib/python2.7/SocketServer.py”, line 430, in server_bind
    self.socket.bind(self.server_address)
    File “”, line 1, in bind
    socket.error: [Errno 98] Address already in use
    Exception KeyError: KeyError(22423024,) in ignored
    请问这是什么原因呢

  6. 在python proxy.py 的时候
    Traceback (most recent call last):
    File “proxy.py”, line 52, in
    import sysconfig
    ImportError: No module named sysconfig
    报了这样到错是什么情况?

  7. 从google找到的,亲测好评~
    如果可以再顺便提一提配合chrome或者firefox的插件使用就更完整了。
    博客很漂亮,博主也是连青有为的少年w
    已关注知乎&G+。

  8. po主提供的greenlet和gevent安装方法不能用

    提供下我的安装方法(安装完python后,安装下setuptools以便使用easy_install)

    安装的greenlet: sudo easy_install greenlet

    安装gevent有两种方法
    1.使用pip安装最新的开发版本
    安装pip:sudo easy_install pip
    然后:sudo pip install cython git+git://github.com/surfly/gevent.git#egg=gevent

    2.安装最新的发行版
    到https://pypi.python.org/pypi/gevent 下载xxx.tar.gz 文件
    cd [下载目录]
    tar -zxvf xxx.tar.gz
    cd [解压目录]
    sudo python setup.py install

    但我始终无法sudo python proxy.py
    总是提示我:please install python-gevent

    • 我知道了
      原因:
      系统原来带有python 2.7.6
      而新装的python 2.7.8 的解释器没有导入系统

  9. 你好,上面所讲的运行 goagent-gtk.py 可以使用 GTK 托盘方式即在右上角显示小图标运行 GoAgent 不是很明白,ubuntu菜鸟求告知。

  10. 为何我的chrome无法导入CA证书?一直显示unknown error?
    百度了下面的方法:
    1,安装证书导入工具:
    sudo apt-get install libnss3-tools
    2, 将goAgent文件夹内的证书文件CA.crt导入(下面中括号内是证书的绝对路径,因人而异,注意)
    certutil -d sql:$HOME/.pki/nssdb -A -t TC -n “goagent” -i [/path/to/goagent/local/CA.crt]

    还是导入不了,好郁闷,ubuntu

    • 另外,如果用命令指示符装证书一直显示: unable to open “/goagent/local/ca.crt” for reading (-5950, 2).
      只有进到local目录,才能读到文件,但是又显示 bad datasheet
      接着用sudo,就没显示啥了。
      但是还是导入不了证书

  11. Pingback: 用 翻墙软件 Chrome+ 为自己的 Chrome 翻墙(含 Linux 中的使用) · 每日博客

  12. Pingback: Chrome 快速翻墙方法 · 每日博客

  13. 求解决啊,照着弄一直是这
    “Traceback (most recent call last):
    File “proxy.py”, line 1496, in
    class AdvancedProxyHandler(SimpleProxyHandler):
    File “proxy.py”, line 1511, in AdvancedProxyHandler
    openssl_context = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD)
    AttributeError: ‘NoneType’ object has no attribute ‘SSL’
    Exception KeyError: KeyError(3067426652L,) in ignored

  14. 好像现在的goagent上传application一直会报下面的问题,请问有没有一些意见/建议?
    Starting update of app: ********, version: 1
    Scanning files on local disk.
    Cloning 4 application files.
    Uploading 1 files and blobs.
    Uploaded 1 files and blobs
    Compilation starting.
    Compilation completed.
    Starting deployment.
    2015-01-11 16:49:33,083 ERROR appcfg.py:2128 An unexpected error occurred. Aborting.
    Traceback (most recent call last):
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 2114, in DoUpload
    app_summary = self.Commit()
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 1905, in Commit
    app_summary = self.Deploy()
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 1957, in Deploy
    result = self.Send(‘/api/appversion/deploy’)
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 1698, in Send
    return self.rpcserver.Send(url, payload=payload, **self.params)
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appengine_rpc.py”, line 365, in Send
    f = self.opener.open(req)
    File “/usr/lib/python2.7/urllib2.py”, line 404, in open
    response = self._open(req, data)
    File “/usr/lib/python2.7/urllib2.py”, line 422, in _open
    ‘_open’, req)
    File “/usr/lib/python2.7/urllib2.py”, line 382, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 1222, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
    File “/usr/lib/python2.7/urllib2.py”, line 1187, in do_open
    r = h.getresponse(buffering=True)
    File “/usr/lib/python2.7/httplib.py”, line 1045, in getresponse
    response.begin()
    File “/usr/lib/python2.7/httplib.py”, line 409, in begin
    version, status, reason = self._read_status()
    File “/usr/lib/python2.7/httplib.py”, line 373, in _read_status
    raise BadStatusLine(line)
    BadStatusLine: ”
    Rolling back the update.
    Traceback (most recent call last):
    File “uploader.py”, line 103, in
    main()
    File “uploader.py”, line 86, in main
    upload(‘gae’, appid)
    File “uploader.py”, line 69, in upload
    appcfg.main([‘appcfg’, ‘update’, dirname])
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 3873, in main
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 2443, in Run
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 3638, in __call__
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 2865, in Update
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 2854, in UpdateVersion
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 2114, in DoUpload
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 1905, in Commit
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 1957, in Deploy
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appcfg.py”, line 1698, in Send
    File “/home/erick/Projects/goagent/server/google_appengine.zip/google/appengine/tools/appengine_rpc.py”, line 365, in Send
    File “/usr/lib/python2.7/urllib2.py”, line 404, in open
    response = self._open(req, data)
    File “/usr/lib/python2.7/urllib2.py”, line 422, in _open
    ‘_open’, req)
    File “/usr/lib/python2.7/urllib2.py”, line 382, in _call_chain
    result = func(*args)
    File “/usr/lib/python2.7/urllib2.py”, line 1222, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
    File “/usr/lib/python2.7/urllib2.py”, line 1187, in do_open
    r = h.getresponse(buffering=True)
    File “/usr/lib/python2.7/httplib.py”, line 1045, in getresponse
    response.begin()
    File “/usr/lib/python2.7/httplib.py”, line 409, in begin
    version, status, reason = self._read_status()
    File “/usr/lib/python2.7/httplib.py”, line 373, in _read_status
    raise BadStatusLine(line)

  15. Pingback: 翻墙利器 | AlanYume

  16. 还有就是感觉GA不如SS好用 SS在服务器配置好之后直接客户端跑个py脚本就行而且是socks5 GA好像只能代HTTP?

发表评论

邮箱地址不会被公开。 必填项已用*标注