使用PHProxy访问受限网站
PHProxy(http://sourceforge.net/projects/poxy/),是一款PHP代理程序,它的好处是:让你在受限网络环境下,访问被禁止的网站,它的典型使用情况如下:
- 如果你的公司禁止员工在上班时间上一些SNS、财经网站等,通过这个程序,可以让你绕过限制
- 如果你想访问墙外的网站,比如Twitter、Facebook等一些人不想让你看的网站,请用PHProxy(这个是本文存在的目的)
当然不是每个人都可以使用它的,前提是:
- 你必须有自己的web站点
- 你的空间提供商允许你做proxy服务,坏消息是大部分空间提供商都禁止用户安装代理程序,比如我的空间商,明确规定:
Anonymous Proxies. HostMonster.Com does not allow the use of anonymous proxy scripts on its servers. They can be very abusive to the server resources, affecting all users on that server.
- 如果你想访问墙外的网站,即使你符合上面两点也是不行的,你的网站必须位于墙外,且你必须修改一下这个程序的代码,请看下面的介绍:
安装PHProxy后,我发现,用它来访问普通网站,是没有问题的,你无需修改它的代码,但是如果你用来访问被GFW墙掉的网站,就不行了。比如:http://www.twitter.com
为什么呢?因为PHProxy首先会将你访问的网站URL,缺省进行一次Base64编码,所以twitter的URL就变成了aHR0cDovL3d3dy50d2l0dGVyLmNvbQ==,然后才进行一次URLEncode编码,变成了aHR0cDovL3d3dy50d2l0dGVyLmNvbQ%3D%3D,而这个字符串大概已经上了GFW的黑名单,不信的话,你用Google搜索下:aHR0cDovL3d3dy50d2l0dGVyLmNvbQ%3D%3D,你的浏览器立刻被重置。
知道原因就简单了,我们只要修改PHProxy,在URL->Base64 Encoder->URL Encoder这个过程后,再加上一道自己定义的编码即可,比如,你把每个字符都加1,解码的时候,再反过来做即可。GFW只会把这些知名站点的URL的用缺省编码加入黑名单,不可能把你新方法加工后的字符串也加入黑名单,因为太多了。
下面做个实际的例子,比如我们可以在编码URL后,将前2位调换到尾部,解码的时候做相反的操作:
else if ($_flags['base64_encode'])
{
function encode_url($url)
{
$tmp = rawurlencode(base64_encode($url));
$head = substr($tmp, 0, 2);
$tail = substr($tmp, 2);
return $tail.$head;
// return rawurlencode(base64_encode($url)); }
function decode_url($url)
{
$head = substr($url, -2);
$tail = substr($url, 0, strlen($url) -2);
$url = $head.$tail;
return str_replace(array(‘&’, ‘&’), ‘&’, base64_decode(rawurldecode($url)));
}
}
上面的代码,我已经验证,可以逃过GFW的封锁。你可以用你自己的喜欢的方式,替换绿色的部分。
注:PHProxy还可以使用ROT13编码,但同样也被屏蔽了,请做同样的Hack。
[ad]
Jason Said on May 19th, 2010 at 4:39 am quote
你好,我按照以上的方法修改了phproxy的index.php.但在勾选base64的情况下,浏览器并不能打开指定的网页,而是显示空白页。 不知我在哪一步做错,希望你能给我一下帮助,谢谢。
Charry Said on May 22nd, 2010 at 10:47 am quote
你能给些具体的错误信息吗,你说的太笼统了,无法判断哪里出错了,你先确认一下是不是你的虚拟主机服务商屏蔽了CURL相关的函数,最好能在代码中打印一些log出来,这样好判断哪里有问题了
HostMonster Review Said on July 23rd, 2010 at 6:41 am quote
Thank you for this blog post. I’m currently being hosted by HostMonster and so far, they seem to be pretty reliable. I’m not sure, though, what other people’s opinions are about the specifications of the hosting plan they offer, as you could get more from another host.
Hostmonster Review Said on September 11th, 2010 at 4:17 am quote
Hostmonster are, in my opinion, a good web host. I currently use them and from what I’ve seen, there hasn’t been any downtime problems and the support team have been able to sort out the problems I’ve had. My overall opinion? Definitely recommended.
Ansurf Said on November 6th, 2010 at 12:02 am quote
能不能再举几个例子
比如 每个字符加1之类的。这个每个字符加1的意思是用每个字符后面的一个字符来代替吗?
Charry Said on November 23rd, 2010 at 1:39 pm quote
No, let me show you an example:
Say you have a string like: “aBsecK”, you’ll get “bCtfdL” by following the simple transformation. b = a + 1, L = K + 1, etc. Please be ware of that, the algorithm is not strong, you might want to implement your version.
(Sorry, I’m in a Linux without Chinese Input Method)