记录我工作学习生活中的点点滴滴......

镜像程序的实现原理,4行代码的万能小偷
发布于 网络采集
2013-05-23 11:07:45
8145
4

昨晚朋友发来个地址,打开一看是一个做镜像程序。看了下演示,发现原理其实很简单,或者说就是在线代理的原理。

上午抽时间还原了下这个原理,现在代码分享出来,供有需要的朋友获取。

1、地址归一

为了获得更好的效果,所以地址我们完全仿照源站地址,这样就需要使用各种技术来接收这个地址,因为我们这里仅讨论原理,所以就使用伪静态吧,以下是apache的伪静态规则

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

这个伪静态可以把所有访问不到的地址都归一到index.php入口文件上的$_GET['s']

2、配置文件 config.php

我们将需要配置的单独出来,方便扩展,这里我们以chinaz为例

$url='http://www.chinaz.com';

3、入口文件 index.php

这是核心处理部分,我们根据伪静态得到的$_GET['s']参数与配置文件设置的地址组装成新地址,然后获取这个新地址的内容,当得到内容之后将页面内容的链接转换成我们自己的站内链接


include __DIR__.'/config.php';
$path=isset($_GET['s'])?strval($_GET['s']):'';
$geturl=$url.'/'.ltrim($path,'/');
$content=file_get_contents($geturl);
$content=str_replace($url,'',$content);
echo $content;

ok!已经完成,可以试试效果。

4、扩展子目录存放

当子目录的时候我们发现上述的地址无效了,我们增加个子目录的配置,比如我的在根目下的c子目录,在config.php增加

$sitepath='/c';
然后修改Index.php
$content=str_replace($url,'',$content);
改为
$content=str_replace($url,$sitepath,$content);
ok,现在好了,子目录也可以使用了!


更多扩展比如,字词替换,logo替换,同义词替换,修改地址规则,图片处理,css优化,javascript处理,广告增加,缓存,seo优化等等就不说了,自己完善即可。





分享本文到:
除非特殊注明,本文版权归原作者所有,欢迎转载!转载请注明版权以及本文地址,谢谢。
转载保留版权:Pakey's BLog >>网络采集 >>镜像程序的实现原理,4行代码的万能小偷
本文地址:http://www.pakey.net/blog/wannengxiaotou-jingxiangchengxu.html