网站被镜像的解决办法及预防措施!

今天在V2EX上摸鱼,无意间进了蚊子的博客,正好看到一篇文章《博客被全站抓取了》,回想起自己的网站也遇到了这种情况,就顺便评论了下,为了预防以后遇到这种情况,以及能有完整的处理流程,记录下这篇文章。

一、怎么知道网站被镜像

1、网站统计

一般都有规律性的看百度统计或者Google Analytics,会发现非自己域名的统计信息。

2、搜索完整标题或者网站名称

一般会出现非自己域名的网站,打开后内容和字的一模一样,当你进行修改后,对方会进行即时同步。

二、网站镜像对于网站的危害!

一套程序实时抓取你的网页,当你有内容更新,它也会进行更新,从而让百度分不清哪个是真实网站,可能就会优先收录镜像网站的页面,从而你的站点内容,百度 就不认为是原创文章,从而把排名都偏移到镜像的网站中。因为你每天更新的内容都会被镜像网站盗取,从而优先收录,一般来说镜像网站都是老域名,对于收录都有绝对的优势,所以你的排名就会逐渐下滑,对你的网站影响是非常大的,所以我们要去解决这个问题,索性镜像网站的手法并不高明,解决起来并不麻烦。

三、解决方法

1、了解镜像远离

镜像网站是实时抓取你内容的,如果你网站更新了某个内容,通过镜像网站访问,镜像网站都是可以抓取到的,比如你知道了镜像的域名,然后你的网站中更新了一个“1.txt”你用镜像域名/1.txt,也是 可以访问到的,所以我们知道了这个原理后,就比较好解决了。

2、获取镜像网站的IP段地址

一般镜像网站都是会变换IP的,但是一般都是后两段变换,前两段都是固定的,一般都是192.168.*.* 这段IP中的*号,就是经常变换的,但是只要知道前面两段固定IP,我们就可以利用通配符进 行屏蔽,下面是测试IP的方法。 

复制如下代码,新建一个 php 文件,并命名为“ip.php”上传到你的网站根目录。

<?php
$file = "ip.txt"; //保存的文件名  
$ip = $_SERVER['REMOTE_ADDR']; 
$handle = fopen($file, 'a'); 
fwrite($handle, "IP Address:"); 
fwrite($handle, "$ip"); 
fwrite($handle, "n"); 
fclose($handele);
?>

然后利用镜像的域名/ip.php 这个时候你的网站根目录就会生成一个ip.txt,里面就是镜像网站的IP 地址,一定要记住,多访问几次,查出镜像网站的IP端。

3、屏蔽IP段地址

如果你是安装了一些防护工具,你可以直接在进行IP段的屏蔽!

如果你是Apache环境,你直接在.htaccess 文件中添加屏蔽IP代码!

RewriteEngine On
#Block ip
RewriteCond %{http:X-Forwarded-For}&;%{REMOTE_ADDR} (112.113.*.*) [NC] 
RewriteRule (.*) - [F]

上面的112.113.*.* 就是需要屏蔽的IP地址!*代表通配符!

如果你是Nginx环境,在伪静态中添加屏蔽代码即可!

deny 112.0.0.0/8;  屏蔽后三段通配IP

deny 112.113.0.0/16;屏蔽后两段通配IP  

deny 112.113.150.0/24; 屏蔽后一段通配IP 

根据自己的情况去写就可以了,我写的是屏蔽后两段通配IP!

四、如何预防被镜像

1、宝塔

一键开启防护,这个功能一般都是免费的。

2、网站启用HTTPS

可以防止部分程序镜像我们的网站

3、网站内调用防镜像代码

代码如下:

host = window.location.host; 
var site= "www.lanka.cn";
if (host!=site )
{ 
alert(window.location.host+':为非法镜像网站,为了您的安全正在带您回到原网站');  
location.href='http://'+site+window.location.pathname; 
}

把上边代码,保存成JS文件,然后在首页<script src="/你保存的文件名称.js"></script>代码调用。