wallproxy配置及常见问题汇总

wallproxy 1.0.4 安装使用指南完整版

wallproxy 1.0.4 安装使用说明 从基础开始学习安装配置 wallproxy。
wallproxy 粉丝团 提供下载地址
http://code.google.com/p/wallproxy-fensi/
本wiki的目的

从0开始将wallproxyV1.0.4安装配置好
注意版本更新后请配置说明可能会更新较慢,请参考文件包里面的readme.txt和本文档

wallproxy需求

计算机装有windows或linux系统(对于mac,塞班,Android,iphone只能支持wallproxy部分功能)
手机(接收验证码用,有GAE的app者可以跳过,)
所在网络有办法连接上如下网站:

1.下载wallproxy用 https://code.google.com/p/wallproxy/
2.上传服务器端用 https://appengine.google.com/
3.上传服务器端登录用 https://www.google.com/accounts/
4.连接代理用 http://shell.appspot.com/

 

这是wallproxy项目组提供的wallproxy使用说明表,转载下载希望能给大家提供帮助……

Wallproxy是由@hexieshe开发的基于Google App Engine和Python代理程序,旨在通过Google代理更好的访问互联网。

http://code.google.com/p/wallproxy/

 

附录有对不满足上述条件的解决办法

内容
1.申请GAE的app

用浏览器访问https://appengine.google.com/
登录你的某个gmail,如果gmail帐号没有请点下面的”Create an account now”
点Create Application
输入你的手机号以验证
输入一个”Application Identifier”,下面的”app-id”,建议随机生成一个6位字母串(如”tmgszm”),以避免你的id被屏蔽
“Application Title”,对于wallproxy来说无关紧要…
如果出现”Application Registered Successfully”即表示注册成功

注意事项:

每个gmail帐号一共能生成10个app
每个手机号只能验证成功一次
某个app的管理权限可以与其他gmail帐号分享

2.上传wallproxy的服务器端至GAE

用浏览器访问http://code.google.com/appengine/downloads.html
下载你的操作系统的python版SDK
安装GAE的SDK
修改wallproxy服务端(一般是server文件夹)的app.yaml文件第一行

application: app-id

将app-id用你第一步注册的id来代替(:号后面的空格不可少)

用GAE的SDK上传那个server文件夹

对于从旧版更新者:上传服务端后请先在Datastore Viewer中将原有WPConfig清空.
URL说明:fetch.php对应于gaeproxy插件,fetch0.php对应于forold插件。

3.修改客户端配置文件

用文本编辑器(如UE,vim,word…)打开客户端目录(一般为local目录或者包含proxy.exe的目录)下的proxy.conf

gaeproxy = [{
‘url’: ‘http://.appspot.com/fetch.php’,
‘key’: ”,
‘crypto’:’XOR–0′
}]

修改第16行: 将“’url’: ‘http://.appspot.com/fetch.php’”这里填上自己的appid。

注意所有标点符号使用英文半角.
配置文件满足python26/27语法规范.

4.导入证书

这个是可选功能,浏览https网站用,需要linux用户安装pyOpenSSL和python26/27
导入根证书:将_ca.crt导入为根证书,以后遇到https链接就不会弹出证书无效的警告了。首次运行程序后会生成cert/_ca.crt,导入后最好将以前添加例外的网站全部删除以避免冲突。
Windows下IE等浏览器双击_ca.crt选择导入证书按提示操作即可;
Firefox依次操作:首选项->高级->加密->查看证书->证书机构->导入->选择_ca.crt文件->选中第一项->确定;
Linux下Chrome按照LinuxCertManagement操作。
每次版本更新时有两个选择:
将上次导入的根证书删除,再把新的根证书添加进去.
直接将上一个版本的cert文件夹复制到新版本目录中去.
(几乎不会遇到)机器上有多个版本的wallproxy目录:
将证书比较多的cert复制到其他目录去.
修改代码使不同目录的wallproxy生成署名不同的证书

4.客户端运行说明

使用GUI的用户,除startup.py、win-patch.py可删除外,其他文件应该保留,首次运行或修改配置文件后出错请运行 proxy.exe查看出错信息,配置正确后运行WallProxy.exe即可。如果不是直接拨号,可使用WallProxy管理IE代理以实现更快速 准确高效的自动代理选择,且可对IE、Chrome、Firefox等浏览器均有效。
Linux/Mac等类Unix用户,可仅保留startup.py、src.zip、proxy.conf,运行startup.py。如果提示缺少 OpenSSL且该系统没有其实现,可从其他地方复制cert目录(含ca.key和ca.crt);如果提示缺少AES等加密模块且该系统没有其实现, 可以改用XOR–0加密模式。AutoProxy插件生成的PAC能实现更快速准确高效的自动代理选择,可配合FoxyProxy等浏览器扩展使用。
Windows下使用源码的用户,可使用解压软件从proxy.exe中提取出OpenSSL和Crypto,然后运行win-patch.py对版本进 行修改(Python2.5下修改后OpenSSL可正常使用,加密模块不能,解决办法是寻找Crypto适用于Python2.5的版本或换 Python或改用XOR–0;Python2.6/2.7下修改后均可正常使用),需要保留的文件(夹)有startup.py、src.zip、 proxy.conf、OpenSSL、Crypto,运行startup.py。
虽然很少有人报告用于Android的情况,但如果GAppProxy能够运行,WallProxy肯定也是能够运行的(保留startup.py、 src.zip、proxy.conf及cert目录);“根据AutoProxy规则提供判断函数用于find_http_handler”也许此时才 真正派上用场(PAC可用时建议用PAC)。

附录
1.设置密码

这个是可选功能,目标为:提供一定安全性,通过其他防火墙或代理的过滤,和防止你的GAE代理地址被滥用.需要linux用户安装pyCrypto

第一次运行代码,先用
浏览器访问http://you-app-id.appspot.com/fetch.php,如果出现跳转至twitter.com表明成功访问(即使twitter.com网站打不开也没事)
或者正常代理使用该地址一次
下面是修改密码过程:
访问https://appengine.google.com/
选择对应的app-id
选择左边栏data->Datastore Viewer
上面的Query->By kind:选择WPConfig,(如果没有WPConfig请重试第一步,或者配置好客户端尝试代理一次.)
点击下面的id=xx连接进入配置页面:
siteKey为密码,输入一个密码即可,如:”TmgSzmfkw4bBZ”(英文,数字,字符,汉字,转义符…)(默认:””空)
cryptomode为加密方法,可以不用修改,默认值:XOR–0,为了一定安全性建议使用AES-CBC-32
另外的cacheTime、cfgCacheTime、maxSize见字面意思分别是缓存时间、配置缓存时间、能够fetch最大大小
用原来的密码代理访问http://wallproxy/cache/reset
修改本地端参数

第一次运行后,本地端默认值为:

gaeproxy = [{
‘url’: ‘http://.appspot.com/fetch.php’,
‘key’: ”,
‘crypto’:’XOR–0′
}]

服务端参数和本地端参数名称对照

siteKey->key
cryptomode->crypto
比服务端多一对引号

2.配置文档FAQ

配置文档有很多函数接口,可以根据python26/27语法进行编写,也可以保留默认设置.
配置文件完全遵循python26/27语法.可以参考python对应文档
怎么设置多个app?

gaeproxy = [{
‘url’: ‘http://app1.appspot.com/fetch.php’,
‘key’: ‘12345’,#密码为12345
‘crypto’:’AES-CBC-32’#加密方式为AES-CBC-32
‘proxy’:’http://www.google.cn:80’#连接服务端的代理
},{#加密方式和上一个一样
‘url’: ‘http://app2.appspot.com/fetch.php’,
‘key’: ‘123\0x01456\0x024789\0x030’
},{#密码和上一个一样
‘url’: ‘http://app3.appspot.com/fetch.php’,
‘crypto’:’DES3-ECB’
},{‘url’: ‘http://app3.appspot.com/fetch.php’},
‘https://app4.appspot.com/fetch.php’,
‘https://app5.appspot.com/fetch.php’]

只申请了一个app,怎样才能使用多个线程下载大文件(在线视频)?

gaeproxy = [{
‘url’: ‘http://app1.appspot.com/fetch.php’,
‘key’: ‘12345’,
‘crypto’:’AES-CBC-32′,
‘proxy’:’http://www.google.cn:80′,
‘max_threads’:5 #限制一下最大线程数目,
}]
gaeproxy*=3 #将同一个app多复制几遍

3.plugins使用说明

一个plugins就是一个软件功能,以hosts为例:

使用hosts功能

plugins[‘plugins.hosts’] = ‘hosts’

不使用hosts功能

#plugins[‘plugins.hosts’] = ‘hosts’

hosts:将一个域名与另一个域名或ip绑定,解决DNS污染或ip屏蔽的问题,如:

hosts = ”’
www.google.cn .appspot.com
2404:6800:8005::65 www.youtube.com
”’
plugins[‘plugins.hosts’] = ‘hosts’

即将域名*.appspot.com与www.google.cn绑定,软件会向DNS解析出www.google.cn的ip地址A,然后访问域名*.appspot.com时,会直接连接ip地址A,而不会向DNS解析*.appspot.com的ip

gaeproxy:使用GAE服务器端进行代理(目前的主要功能)
oldproxy:使用GAE0.4.0服务器端或者PHP服务器端进行代理
autoproxy:对访问的URL进行解析以判断直接连接还是使用GAE代理连接
rawproxy:使用其他代理进行连接,如http、https、socks4、socks5
fakehttps:伪造https证书以访问https网站,该功能需要将伪造证书_ca.crt放入浏览器信任列表

4.不满足wallproxy的需求

关于操作系统

由于作者只有windowsXP和Ubuntu(linux)系统,无法开发其他操作系统版本.这里只能抱歉了,
如果你有解决方法,请在issues里面告诉我们.
下面是其他人提出的解决办法(未验证)
android: http://gaeproxy.googlecode.com

关于手机的问题(不成功,没有手机)

过几天再试一下.
在网上看到”淘宝某店可以帮你接收验证码”(未验证)

关于网站(网址)无法连接

无法连接code.google.com、appengine.google.com、www.google.com/accounts/

->请使用其他免费代理,如http、https、socks4、socks5

无法连接http://shell.appspot.com/
修改代理地址为https://you-id.appspot.com/fetch.php
设置(需使用http://you-id.appspot.com/fetch.php)

hosts = ”’
www.google.cn .appspot.com
”’
plugins[‘plugins.hosts’] = ‘hosts’

其他声明

数据保密性不能保证,加密部分只是为了通过其他防火墙或代理的过滤,和防止你的GAE代理被滥用.
隐匿身份不能保证.

已知:

http方式访问GAE会在你机器到GAE传输过程中明文出现你的app-id.
在GAE到对方网站的传输过程中明文出现你的app-id
你访问的网站也会得到你的app-id(包含在UA中)
加密只是简单的将数据对称加密,很容易通过查看你计算机上的配置文件得到密码

 

wallproxy 1.0.4 稳定版本发布后宣布解散 1.0.4版常见问题汇总

看到wallproxy于2011年4月1日解散的消息,保存了项目中一些重要的数据。
希望对wallproxy爱好者有帮助

Wallproxy是由@hexieshe开发的基于Google App Engine和Python代理程序,旨在通过Google代理更好的访问互联网。

http://code.google.com/p/wallproxy/

 

FAQ
1.0.4版常见问题汇总
Featured
Updated Mar 25 (3 days ago) by qgt…@gmail.com
Wallproxy控制台报错是怎么回事?

Error code 502(最常见错误):

Message: ‘string index out of range’, ‘string index out of range’
Message: ‘timed out’, ‘timed out’
Message: ’10054′,’10054′
Message: ’10060 ‘, ’10060 ‘

—-by eric 0325—-

按如下方式设置多个DIRECT_PROXY:

DIRECT_PROXY = [{}, {‘http’:’127.0.0.1:8000′}]

某些网站可能要求使用同一个IP访问,如果设置了多个app,解决办法见如何选择代理

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

需要将ca.crt导入到浏览器根证书机构中,才能使得https不再弹出证书无效的警告。

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

为什么我下载的程序没有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代理,就意味着更在乎速度而不是绝对安全,在这个基础上,能方便一点干嘛非要折磨自己呢?

上传的是fetch.py文件,为什么要使用fetch.php才能访问?

GAE的url是根据app.yaml中的设置映射到某一个文件的,在app.yaml中我们可以看到以下内容:

– url: /fetch\.php
script: fetch.py

表示访问/fetch.php时实际是访问的fetch.py文件(因为url用的是正则表达式,所以需要用\.而不是.)。

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

通过上面的映射将url改为非默认的fetch.php可以一定程度上防盗用。
当然最好的方法是设置Site_Key和cryptomode实现加密来防盗用。
0.3.7版在fetch.py中有一行Site_Key = ”在引号中填入一个任意的字符串(可包含转义字符),然后在修改proxy.conf时’key’: ”中填入相同的字符串,即可。
0.3.8版服务器端在上传后到dashboard里面的Datastore Viewer设置WPConfig项里面的siteKey和cryptomode,然后然后在修改proxy.conf时’key’: ”和’crypto’:’AES-CBC-32′中填入两个相同的字符串,即可。
注意cryptomode只有固定的几十个值,详见wallproxy V0.3.8新版更新简介

访问服务端的默认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)。

Linux用户使用含OpenSSL版仍然提示”ImportError”

这是因为那些包里面是Windows版的OpenSSL或者PyCrypto
请删除那些模块重新安装…

如何编写规则选择代理?

通过使用”==”、”dnsDomainIs”、”re.search”等,见配置书写规则。
例如在proxy.conf文件FindProxyForURL函数中添加代码:

……
scheme, host, port = parseURL(url) #找到此行,从此处开始添加
if host == ‘www.example.com’: return GAE_PROXY[0] #某些网站要求使用同一个IP访问,所以对它只使用一个GAE
if dnsDomainIs(host, ‘example.com’): return PHP_PROXY #指定example.com的所有域名走PHP
if re.search(r’www\.example\.com\/(watch|results|signin)\?’): return GAE_PROXY #通过正则指定特定网页走代理
if not AUTOPROXY_LIST: #此行截止
……

Ubuntu下如何开机自动运行?

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

 

原文http://qqbing.net/tag/wallproxy%EF%BC%8Cwallproxy%E9%85%8D%E7%BD%AE/

http://qqbing.net/wallproxy-1-0-4/

  1. 匿名
    2011年6月19日02:21

    这个版本现在怎样上传到php 空间啊,现在还能正常使用吗

    • iGFW
      2011年6月19日08:48

      服务器端里有个fetch.php文件,把fetch.php传到php 空间就可以了。