Home | Looking for something? Sign In | New here? Sign Up | Log out

2010年9月8日星期三

Google App Engine+WallProxy搭建个人代理服务器详细教程【完美版】

2010年9月8日星期三
今天为大家呈现GAE平台使用WallProxy搭建个人代理服务器翻墙完美教程,https链接,登陆问题,下载大于1M文件,智能选择是否需要使用代理,甚至看Youtube视频等问题都得到解决了,Google App Engine(GAE)是个非常优秀的平台,好好珍惜吧! 为了让完美版的教程能够独立出来,所以在之前的【基础篇】和【改良篇】中的基本操作也结合到这里,从头到尾详细的些一下操作过程和注意事项,已经看过前两篇的朋友就只要看重点就可以了。 在写下详细的教程之前再次感谢署名为“Wallproxy”的这位大哥长期给予的大力支持,完美篇教程的核心内容不久前这位大哥在已经在【基础篇】和【改良篇】的评论中提出来了,向“Wallproxy”大哥致敬! GAE上搭建WallProxy代理服务器主要包含一下三个方面:
  1. 在Google App Engine 上创建一个新的应用
  2. 下载WallProxy资源包(GAE版,PHP版,客户端),上传GAE版的文件至刚创建的应用上
  3. 修改浏览器设置,启动客户端
第一步:一直关注八亿空间,已经看过之前两篇文章的朋友,或者自己对GAE比较熟悉的朋友可以跳过这一步,直接去进行后面的操作了,要是第一次接触Google App Engine,那么你可以看看 “Google App Engine+GAppProxy架设个人翻墙代理服务器详细教程【基础篇】 中的第一步部分创建新的应用的图文教程。如果你使用过GAE,那么只需要用这个账户在创建一个新应用即可,一个Google账户可以创建10个应用! 第二步:下载WallProxy地址:http://code.google.com/p/wallproxy/downloads/list 我们要下载的是wallproxy-win.rar这个,里面包含三部分,一部分是上传到GAE上的文件夹名字是gae_server,客户端的文件夹名字是local,上传到PHP服务器上的是php_server这个文件夹,其中PHP版本是补充GAE的不足之处的,你可以在你下载的压缩文件中看那个txt说明文件。作者写的很详细了。 八亿空间Google App Engine+WallProxy搭建个人代理服务器详细教程 上传gae_server文件夹到GAE上:这回我们使用【改良篇】中提到的方法:
  • 打开gae_server中的的app.yaml文件,修改第一行为自己的id,并把gae_server文件夹复制到Google App Engine SKD的安装路径。【基础篇】第三步有详细的图文说明。
  • 如果你的电脑上还没有安装好Python 和Google app engine SKD,请移步【基础篇】查看“第二步:下载并安装 Python ,Google App Engine SKD”安装好后桌面会有个飞机样子的小图标,点击启动,点“File”然后“Add Existing Application”选择路径添加新的应用。
Google App Engine+WallProxy搭建个人代理服务器-八亿空间 第三部:上传完成后,需要我们对浏览器和客户端做一些设置了。 火狐浏览器修改代理方法:“工具”–“选项”–“高级”–“网络”–“设置”–“手动配置代理”设置为127.0.0.1:8086。WallProxy本身有G.F.Wlist所以你可以修改浏览器的代理即可。要是你想使用AutoProxy插件,那么启动local中的客户端后修改“设置”给“AUTOPROXY_LIST”这一句前面增加一个“#”号,这些在你下载的压缩包中的txt文件里有说明。 还有最重要的一点是把客户端的“设置”中的url那一项修改为自己刚才搭建的代理,注意后缀是php不是pyGoogle App Engine+WallProxy搭建个人代理服务器-八亿空间 对于PHP版的说明:PHP 版上传php_server文件夹下fetch.php到PHP空间 www根目录。所得服务端地址为http://你的域名/fetch.php,将此地址修改到配置文件中即可。PHP版用于弥补GAE的不足(GAE的 DELETE方法有缺陷、不支持上传大于1M,所以我们用PHP弥补,GAE只支持特定的端口,余下的用PHP弥补。) 最后的说明: 非常感谢“wallproxy”这位大哥的指点,也感谢大家的关注,记得好好研究“readme”txt文件,里面有很多详细的说明,再有什么疑问和补充 大家可以添加我的GTalk和我交流或者Twitter联系我,Twitter每天在线时间不比QQ少,GTalk则是和电脑同时开关的,这些联系方式在 侧边栏能找到。

2010年8月29日重要更新:上传问题和证书问题

经wallproxy大哥指点上传遇到麻烦的朋友可以使用SDupload上 传,证书问题解决办法为:把导入根证书的步骤加上吧,将cert/ca.crt导入为根证书,以后遇到https链接就不会弹出警告了,第一次运行后会生 成cert/ca.crt,Windows下IE等浏览器双击ca.crt按提示操作即可导入;Firefox将ca.crt文件拖到Firefox窗口 里,然后选中第一个选项确定即可,导入后最好将以前添加例外的网站全部删除以避免冲突。

2010年8月31日重要更新:上传报错的解决办法

评论中.txt朋友提供了一种办法可以解决上传错误的问题,就是先修改hosts文件(这个在系统盘符的windows\system32 \drivers\etc下面),它是一个没有扩展名的文件,先修改为别的名字,最后修改回来。.txt朋友做出了测试证明了可行性。原理暂时不知道,使 用多个均衡负载的办法在评论中找。
注意事项:除了wallproxy还有.txt和Geek Bao这几个朋友在评论中给予了很多问题的测试解决办法,择日我会整理更新到文章下面,目前大家可以在评论中仔细看看这些朋友提供的一些问题的解决办法

我是一次性搞定,按过程一步一步做应该没问题。另外解决总是提醒安全风险的问题,需要导入证书,下面是wallproxy的作者集成的一些常见问题:

怎么设置多个app?

  • 按如下方式设置多个GAE_PROXY或PHP_PROXY:
  • # 一个PHP_PROXY
    PHP_PROXY = [{
        'url': 'http://server.example.com/fetch.php',
        'key': '',
        'proxy': {},
    }]
    # 三个GAE_PROXY,依此类推
    GAE_PROXY = [{
        'url': 'http://server1.appspot.com/fetch.php',
        'key': '123\0x01456\0x024789\0x030',
        'proxy': {'http': 'www.google.cn:80'},
    },{
        'url': 'http://server2.appspot.com/fetch.php',
        'key': '',
        'proxy': {'http': 'ipv6.google.com:80'},
    },{
        'url': 'http://server3.appspot.com/fetch.php',
        'key': '',
        'proxy': {},
    }]
    # 多个app通过随机选择实现负载均衡,如果需要改变调用频率,例如第1个与第2个调用概率比为4:1,可如下配置:
    GAE_PROXY = [GAE_PROXY[0]]*4 + [GAE_PROXY[1]] #第1个与第2个调用概率比为4:1
  • 按如下方式设置多个DIRECT_PROXY:
  • DIRECT_PROXY = [{}, {'http':'127.0.0.1:8000'}]

WallProxy支持生成根证书并签名子证书,为什么我的还是会弹出证书无效警告?

  • 需要将ca.crt导入到浏览器根证书机构中,才能使得https不再弹出证书无效的警告。
  1. 首次运行程序后会在程序所在目录生成cert文件夹,里面有一个ca.crt文件
  2. Firefox依次操作:“首选项->高级->加密->查看证书->证书机构->导入->选择ca.crt文件->选中第一项->确定”,即可导入成功
  3. IE等Windows下浏览器用户双击ca.crt选择导入证书按提示操作即可导入成功
  4. Linux下Chrome用户参考Linux下Chrome导入证书进行导入
  5. 导入后最好将原来添加例外的网站都删除以避免证书冲突

为什么我下载的程序没有cert目录及ca.crt文件?

  • ca.crt 与ca.key是配套的,如果两者都公开,会留给外界证书欺骗的隐患,所以不再提供现成的ca.crt和ca.key,而是在每位用户首次运行程序时自动 生成。同时生成的还有一个serial文件,用于纪录签名子证书的序列号,因为一个ca签名的证书应该拥有不同的序列号。当这3个文件缺少任意1个时都会 重新生成内容不同的这3个文件,这时需要再重新导入根证书,所以不要随意删除这3个文件中的任何一个。

WallProxy导入根证书后不弹出警告毫无意义,是误导?

  • 因 为所有基于GAE的代理都不支持原生的https,都不是严格意义上安全的,所以将https走GAE代理后,不会因为不弹警告变得安全,更不会因为弹警 告变得安全。既然如此,不弹警告怎么说也要更方便一些。而且不导入而是将伪造的加入例外的话,遇到真正的证书后还会证书冲突。
  • 再来说说安全性。WallProxy上行时所有数据经过zlib压缩后再异或加密;下行时对于html文件zlib压缩后再异或加密,其他文件比较压缩前后的体积,选择体积小的异或后发回,尽量节约了流量,也很少存在明文发送的可能。相比之下,GAppProxy上行时只对url进行了base64加密,其他内容为明文;下行时对文本文件zlib压缩,其他文件原样发回。安全性还算是有提升的。
  • GAE代理无法原生支持https,既然拿它作https代理,就意味着更在乎速度而不是绝对安全,在这个基础上,能方便一点干嘛非要折磨自己呢?

  • GAE的url是根据app.yaml中的设置映射到某一个文件的,在app.yaml中我们可以看到以下内容:
  • - url: /fetch\.php
      script: fetch.py
表示访问/fetch.php时实际是访问的fetch.py文件(因为url用的是正则表达式,所以需要用\.而不是.)。

怎么防止服务端被别人盗用?

  • 通过上面的映射将url改为非默认的fetch.php可以一定程度上防盗用。
  • 当然最好的方法是设置Site_Key实现异或加密来防盗用(异或太简单?简单速度快啊,加密挺影响速度的)。在fetch.py中有一行Site_Key = ''在引号中填入一个任意的字符串(可包含转义字符),然后在修改proxy.conf时'key': ''中填入相同的字符串,即可。

访问服务端的默认UA是类似“Python-urllib/2.6”的,怎么伪装成浏览器?

  • 配置文件proxy.conf中有个隐藏的HEADERS参数用于设置http头,默认是
  • HEADERS = {'Content-Type':'application/octet-stream'}
我们改为以下内容就伪装成了Firefox:
HEADERS = {'Content-Type':'application/octet-stream', 'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8'}
觉得默认的Content-Type不合理也可以进行修改。

提示“ImportError: No module named OpenSSL”

  • 这是因为使用了源码版而Python没有OpenSSL模块
  • Linux用户安装python-openssl即可解决:sudo apt-get install python-openssl
  • Windows用户下载pyOpenSSL(建议使用Python 2.6)。svn中上传了Python2.6对应的所需pyOpenSSL模块,checkout下来后将_OpenSSL文件夹改名为OpenSSL放到程序所在目录也可以。

如何编写规则选择是使用GAE还是PHP?

Ubuntu下如何开机自动运行?

  • 对 于一般的Python程序,无论是在sh脚本文件中直接写路径还是在路径后加&,当该脚本运行结束时Python都会伴随结束。我们不由脚本启动 而是由会话启动则不会这样了,依次选择“系统 > 首选项 > 会话 > 会话启动程序 > 添加”,在这里设置启动就可以了。


如遇到问题请查看原文连接:http://www.win8e.com/google-app-engine-wallproxy.html 中的评论。


0 评论:

Forum

get your own embeddable forum with Talki
 

CAOGFW网络学习笔记

翻墙搜索引擎

Loading

网页浏览总次数

统计