Challenge your imagination!
28
2:40 PM |
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(由于作者的主页已经无法访问,所以在本地放了一份供大家下载)。




Comments(16):  [RSS for comments]   [TrackBack URI]
  1. 1
    druggo | 2006.9.4 12:44 PM

    nph cgi is a good solution:
    http://www.jmarshall.com/tools/cgiproxy/
    eg:
    http://gentoolinux.cn/cgiproxy/nph-proxy.pl

    [Reply]

  2. 2
    oasisfeng | 2006.9.4 8:01 PM

    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]

  3. 3
    metalstorm | 2006.9.19 2:51 PM

    站长,可否为我解释下本地需要什么配置?py文件需要什么特殊的平台来运行么?我照着readme配置了那个conf文件,但还是连不上,服务器上只需要那个php文件就行了吧?

    [Reply]

  4. 4
    Yanni | 2006.10.19 11:17 AM

    我个人觉得phproxy挺好的了

    http://2is.net/proxy/

    [Reply]

  5. 5
    Allen | 2006.10.22 12:27 PM

    站长,可否为我解释下本地需要什么配置?py文件需要什么特殊的平台来运行么?我照着readme配置了那个conf文件,但还是连不上,服务器上只需要那个php文件就行了吧?

    我在dreamhost上试了很久都没成功。换了别的空间马上就可以了,不知道为什么。

    [Reply]

  6. 6
    oasisfeng | 2006.10.23 1:20 AM

    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]

  7. 7
    Allen | 2006.11.19 1:00 AM

    又来烦你了,站长,呵呵
    在客户端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]

  8. 8
    Allen | 2006.11.19 1:02 AM

    咦,大小于号都没有了,我改一下
    —————————————————-
    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]

  9. 9
    oasisfeng | 2006.11.19 2:14 AM

    这个没有什么影响的,提示的意思是本地(浏览器)断开了socket连接。浏览器如果停止加载网页或者超时都会断开连接的,这是正常现象,不用担心。:)

    [Reply]

  10. 10
    Allen | 2006.11.19 9:40 PM

    Thank you!那我上面列举的文件最少需要哪几个?

    [Reply]

  11. 11
    oasisfeng | 2006.11.19 9:48 PM

    服务器上只需要.php那一个文件,其它都是客户端用到的。

    [Reply]

  12. 12
    ibj | 2007.11.27 11:24 PM

    关于:自己搭建了一个WebProxy
    请问:

    1)目前是否还在使用这种PHPproxy?
    2)现在还能否提供此份软件?能发邮件非常感谢.
    3)能否请教配置的问题?

    [Reply]

  13. 13
    oasisfeng | 2007.11.28 1:33 AM

    已提供本地镜像下载,我一直在使用它,很好用。 :)

    [Reply]

  14. 14
    China Netizen » Anti-GFW blogger ratted on
    [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 [...]

  15. 15
    sonichkhk | 2007.12.18 4:36 PM

    我試了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]

  16. 16
    oasisfeng | 2007.12.19 11:13 PM

    出现上面这个错误提示是正常的,表示你的浏览器强制结束了连接。

    [Reply]

Leave a comment