| 28 | |
| 2006.8 |
介于最近GFW活动越来越频繁,早先打开的Google News刚点一个链接就访问不了,脱机回退之后才发现原来上面出现了一则引述台湾媒体的新闻…… 实在是佩服GFW的处理效率啊! 考虑到新近购入的DreamHost虚拟主机流量基本还未利用起来,于是决定搭建一个WebProxy,至少还可以访问一下Google Cache、Wikipedia吧。
(注意:因为自己搭建的WebProxy流量是算在你的虚拟主机IP上的,所以请不要随意用它访问GFW所不欢迎的网页,免得届时不仅自己的网站遭殃,还可能牵扯到不少同主机的国内用户。所以,请慎之!)在选择相应的服务器软件时,倒是费了不少周折,先后尝试了多款开源的php版的WebProxy,效果都不理想。它们大多不能很好的处理隐式的链接,若遇上Ajax就更是一塌糊涂,不仅如此,还常常在引用script、CSS等环节上出问题。毕竟,这些开源的小项目都很少能有复杂的分析引擎。
无意中,我发现了一款比较另类的软件——PHP Proxy(注意哦,此PHP Proxy非彼PHP Proxy,找到前者还真花了我不少功夫),它完全采取了与目前的WebProxy所不同的机理:服务器端(php)+客户端(Python)。安装好服务器上的php程序(仅一个文件)后,在自己的客户端启动一个Python小程序后就创建了一个本地的中转代理。只需在IE中设置代理为localhost及已配置的端口,即与使用普通HTTP Proxy全无差别了。(或许应该称其之为Web HTTP Proxy吧)
绕开了WebProxy一般所必须面对的地址转换处理后,则所有的问题都不复存在了。试用了一阵子,完全和普通HTTP一样的稳定和方便,而且访问很多外国网站的速度都有明显提升。(嘿嘿,就我一个人使用的Proxy当然快了^_^) 注:因为前面提到的原因及带宽方面的因素,很抱歉这个WebProxy不能对大家开放试用。
附:PHP Proxy(由于作者的主页已经无法访问,所以在本地放了一份供大家下载)。


nph cgi is a good solution:
http://www.jmarshall.com/tools/cgiproxy/
eg:
http://gentoolinux.cn/cgiproxy/nph-proxy.pl
[Reply]
Thanks for your advice!
It seems that CGIProxy is much more advanced in url correction.
But for some private reason, I prefer the “transparent tunnel”, you know it. ;)
[Reply]
站长,可否为我解释下本地需要什么配置?py文件需要什么特殊的平台来运行么?我照着readme配置了那个conf文件,但还是连不上,服务器上只需要那个php文件就行了吧?
[Reply]
我个人觉得phproxy挺好的了
http://2is.net/proxy/
[Reply]
我在dreamhost上试了很久都没成功。换了别的空间马上就可以了,不知道为什么。
[Reply]
DreamHost上部署时需要注意PHP版本问题,我是在PHP4下运行的,PHP5没测试过,不排除缺少部分运行库的可能。
本地的配置既可放在phpproxy.py.conf中,也可以直接修改phpproxy.py。以下是我的配置文件,仅供参考(将phpproxy一行替换为你的服务器端php文件地址):
localhost = ‘127.0.0.1′
localport = 8080
phpproxy = ‘http://www.oasisfeng.com:80/phpproxy.php’
proxy = None
useragent = ‘PHPProxy; -1bit; Python/PHP’
[Reply]
又来烦你了,站长,呵呵
在客户端phpproxy.py.exe界面显示:
proxy server ready..
—————————————————-
Exception happened during processing of request from
Traceback :
File “SocketServer.pyc”, line 463, in process_request_thread
File “SocketServer.pyc”, line 254, in finish_request
File “SocketServer.pyc”, line 521, in __init__
File “phpproxy.py”, line 74, in handle
File “phpproxy.py”, line 100, in send_req
File “socket.pyc”, line 256, in write
File “socket.pyc”, line 243, in flush
error:
—————————————————–
但是浏览网页正常,不知道为什么?
对了,我一共在同一目录放了phpproxy.py,phpproxy.py.conf,phpproxy.py.exe,python24.dll,library.zip
phpproxy.php放在空间上。是不是少了什么或者多了什么?
[Reply]
咦,大小于号都没有了,我改一下
—————————————————-
Exception happened during processing of request from 《’027.0.0.1′, 4182》
Traceback 《most recent call last》:
File “SocketServer.pyc”, line 463, in process_request_thread
File “SocketServer.pyc”, line 254, in finish_request
File “SocketServer.pyc”, line 521, in __init__
File “phpproxy.py”, line 74, in handle
File “phpproxy.py”, line 100, in send_req
File “socket.pyc”, line 256, in write
File “socket.pyc”, line 243, in flush
error: 《10054, ‘Connection reset by peer’》
—————————————————–
[Reply]
这个没有什么影响的,提示的意思是本地(浏览器)断开了socket连接。浏览器如果停止加载网页或者超时都会断开连接的,这是正常现象,不用担心。:)
[Reply]
Thank you!那我上面列举的文件最少需要哪几个?
[Reply]
服务器上只需要.php那一个文件,其它都是客户端用到的。
[Reply]
关于:自己搭建了一个WebProxy
请问:
1)目前是否还在使用这种PHPproxy?
2)现在还能否提供此份软件?能发邮件非常感谢.
3)能否请教配置的问题?
[Reply]
已提供本地镜像下载,我一直在使用它,很好用。 :)
[Reply]
[PINGBACK] | 2007.12.1 10:45 PM
[...] cache 翻墙小软件 MyEntunnel Here’s a small anti-Great Firewall software, MyEntunnel 自己搭建了一个WebProxy Build your own WebProxy Tor代理全套解决方案 The full guide on how to use Tor 访问Blogspot [...]
我試了2個空間還是一樣問題,真不知發生什麼問題 一用這proxy老在google主頁
proxy server ready..
—————————————-
Exception happened during processing of request from (’127.0.0.1′, 2138)
Traceback (most recent call last):
File “C:\Python25\lib\SocketServer.py”, line 464, in process_request_thread
self.finish_request(request, client_address)
File “C:\Python25\lib\SocketServer.py”, line 254, in finish_request
self.RequestHandlerClass(request, client_address, self)
File “C:\Python25\lib\SocketServer.py”, line 522, in __init__
self.handle()
File “C:\Documents and Settings\Administrator\桌面\phpproxy-0.6\phpproxy.py”,
line 74, in handle
self.send_req(req)
File “C:\Documents and Settings\Administrator\桌面\phpproxy-0.6\phpproxy.py”,
line 100, in send_req
self.wfile.write(c)
File “C:\Python25\lib\socket.py”, line 262, in write
self.flush()
File “C:\Python25\lib\socket.py”, line 249, in flush
self._sock.sendall(buffer)
error: (10053, ‘Software caused connection abort’)
—————————————-
[Reply]
出现上面这个错误提示是正常的,表示你的浏览器强制结束了连接。
[Reply]