利用PHP纯代码实现二级栏目反向代理
关于做二级栏目反向代理大都是在主机根目录.htaccess 文件里进行配置做反向代理,不少的站点都在做着类似于GG,youtube的反向IP代理,这样一来gg代理被封还是可以从后台更改可用的IP的,对于二级栏目就是在当前的网站里面开设一个二级栏目,这需要在 apache 或者 IIS里面进行设置的,而在虚拟主机里面也是可以简单设置的,而如果要安全替换域名则是较麻烦的一件事情。
利用PHP在虚拟空间的简单二级代理代码如下:
- <?php
- $aa = $_GET['a'];
- $url= "https://www.xiariboke.net/".$aa;
- echo file_get_contents( $url );
- ?>
在夏日博客的前一章节里面已经介绍过了 file_get_contents 函数,这个函数就是读取的 $url 的网址内容,我们将这段代码保存在 .php 文件中,然后在虚拟主机的根目录下再建立一个新文件,比如 000,这样在打开的时候 xiariboke.net/000 的时候就是 $url 定义的网址内容了,但这个代码有个弊端就是无法代理链接的网址或者说会占用这个虚拟机的资源。
再分享一个同为代码的二级栏目反向代理,代码如下:
- <?php
- function get_url_content($url) {
- if(extension_loaded('curl')) {
- $ch = curl_init(trim($url));
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $content = curl_exec($ch);
- curl_close($ch);
- } else {
- $content = @file_get_contents(trim($url));
- }
- return $content;
- }
- ?>
习惯使用file_get_contents函数读取远程内容的程序员也许会发现,尽管设置了超时,可file_get_contents有时还是会遇到获取失败的问题。
这时候,看一下服务器的连接池,会发现一堆类似的错误,让你头疼万分:
file_get_contents(http://***): failed to open stream…
而改用curl库后,稳定性就提高了很多。
不过并不是所有服务器都安装有curl,所以为了保险,或者我们更可以判断一下系统是否安装有curl扩展,有的话使用curl获取远程内容,没有的话使用file_get_contents,代码如下:
- <?php
- function get_url_content($url) {
- if(extension_loaded('curl')) {
- $ch = curl_init(trim($url));
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- $content = curl_exec($ch);
- curl_close($ch);
- } else {
- $content = @file_get_contents(trim($url));
- }
- return $content;
- }
- ?>
以上的代码可以做个简单的二级栏目反向代理,稍微复杂一点的就不可以了,当然我们还是有办法的,可以在虚拟主机下使用一款叫做 7ghost 网站反向绑定域名的程序,这款程序可以设置较复杂一点的二级反向代理,可以自定义填写需要需要代理的整站网址,可以替换整站域名以及替换 html 相对地址,还有CSS相对地址,静态页面的缓存,自定义缓存类型,总之来说,是够强大的,但需要虚拟机的配置要足够大,因为可能要缓存一些文件进去,对于做简单的代理还是较强大的,但还是有一些不足的地方,目前夏日博客正在研究,如果有想要探讨的可以在下方留言,好了,先简单看一下这款程序的界面吧,如下:
关于这款软件的下载地址,可以到 http://down.chinaz.com/soft/35241.htm 这里进行下载,这里就不多介绍了。。