2009年12月11日星期五

[GFW BLOG] 关于网页代理的更新

来源:http://hi.baidu.com/aullik5/blog/item/9f551339455401f8b211c748.html

我前段时间写的那个网页代理,由于GFW封了GAE的https,所以不能用了。

这几天利用在家休假的时间,简单修改了一下。

我发现在GAE上搭建网页代理,速度还是非常快的,因为用的是google的带宽。

目前来说,TOR太慢了,还要找有效的bridge。其他类似的VPN类软件,比如 hotspot shield, 速度也非常慢,且有时候不稳定。同事的ssh tunnel也试用过,速度还是比不上GAE,而且用了一段时间被封了,杯具。自己找肉鸡做 vpn 难以维护,现在也没那个精力和闲情去找肉鸡了。

GFW目前的策略是会检测所有http request中请求的地址,如果发现违禁的网站,则限制其连接。但是对于返回的http content似乎并没有做限制。

出于这一点,之前我在GFW上搭建的代理是使用https的,最近GFW封了https,所以需要另寻出路。

很自然的就想到了点对点的通信,只要让GFW看不懂http请求中的地址,就达到了要求。

所以可以考虑在浏览器里使用js对提交的网页地址进行加密,在服务端再进行解密。

或者使用js进行混淆,在服务端再解码。

出于简单和高效的原因,我使用了混淆的形式,将所有的url全部反过来

比如 www.baidu.com 变成 moc.udiab.www

客户端js:
function convertStr(str){
var temp = new Array();
for (i=0;i<str.length;i++){
temp.push(str.charAt(str.length -1 - i));
}
return temp.join('');
}

服务端:
def convertStr(self, str):
temp = []
newStr = ''
for i in range(0, len(str)):
temp.append(str[len(str)-1-i])

for s in temp:
newStr += s

return newStr

如果未来GFW开始检测网页内容,则可以考虑混淆或加密整个http请求,在客户端再用js解密,然后把所有内容document.write 出来。

这个网页代理的代码我以前是计划开源出来,但是我一直缺乏时间和精力去维护,所以现在还只完成了一些基本功能,看看GET的网页还行,但是POST和复杂js就不支持了,而且代码也不够优雅,所以就自己用用算了。

出于法律风险的考虑,SecINN 暂时不打算提供网页代理的功能.

--
Posted By GFW Blog to GFW BLOG at 12/11/2009 07:19:00 PM

--
1、请点击www.chinagfw.org访问我们,订阅地址:http://feeds2.feedburner.com/chinagfwblog。2、需要Psiphon2注册邀请的朋友,请向english@sesawe.net发送电子邮件请求,说明 "can I have psiphon2 access" 并告诉您所在的国家。也可以使用Twitter Direct Messages或登陆Psiphon网站直接向Psiphon索取使用邀请。3、GFW Blog现提供最新翻墙工具下载(地址一、二、三),翻墙(突破网络封锁)方法介绍请见本站anti-censorship部分。4、本站热烈欢迎各位朋友投稿或推荐文章,请发邮件至chinagfwblog[at]gmail.com。5、敬请关注、支持、参与Sesawe和黑箱监管集体诉讼。
To unsubscribe from this group, send email to
gfw-blog+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/gfw-blog?hl=zh-CN

没有评论:

发表评论