今天有个客户问我网站被镜像的怎么办,那么今天就发一篇关于解决网站镜像的几种方法的文章,大家根据自己的情况选择适合自己的解决方法吧。

网站恶意镜像的介绍

恶意镜像,也叫恶意克隆,恶意解析,是指一些人利用域名的A记录解析,反向代理,以及一些小偷程序等手段,将被镜像的网站复制到另一个域名下。

镜像网站与被镜像的网站,在用户看来,除了域名不一样外,其网站的布局,内容,文字,图片等都一样,并且会随着被镜像网站的内容更新而更新。

网站被恶意镜像后的解决办法

网上有文章说,网站的采集与镜像是一样。其实这个说法是错误的,网站的采集与镜像在本质上是有区别的。

采集的网站一般是提前抓取别人网站的内容,放入自己数据库,再用程序调用到页面上。

镜像网站并不事先抓取内容,而是有人访问网站时,实时从被镜像的网站调取内容,并替换内容中的个别文字,或着加入一些SEO的关键字等,然后实时显示。被镜像的网站有任何更新,镜像网站是实时同步的。

网站恶意镜像的危害

1、网站恶意镜像一般都是针对的一些权重不高的小站,新站。其会让搜索引擎认为你的网站不是原版,镜像网站才是,所以把排名、流量给了镜像网站。

2、镜像的网站,会通过一些其它的技术手段,在内容中添加一些 XX 内容等来引导访客的访问,或是利用JS直接将网站跳转到其它站点上去,导致流量被劫持。

网站被镜像的解决方法

JS解决防止网站镜像

JS代码

<script>
//将代码中的网址,替换成自己的
    if (window.location.host.search('feiniaomy.com') == -1) {
        window.location.href = 'https://www.feiniaomy.com';
    }
</script>

以上代码很容易被镜像网站的操作者发觉,所以我们可以把JS代码利用一些工具混淆一下

混淆后的JS代码

<script>
    if (window['\x6c\x6f\x63\x61\x74\x69\x6f\x6e']['\x68\x6f\x73\x74']['\x73\x65\x61\x72\x63\x68']('\x66\x65\x69\x6e\x69\x61\x6f\x6d\x79\x2e\x63\x6f\x6d') == -1) { window['\x6c\x6f\x63\x61\x74\x69\x6f\x6e']['\x68\x72\x65\x66'] = '\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x66\x65\x69\x6e\x69\x61\x6f\x6d\x79\x2e\x63\x6f\x6d' }
</script>

屏蔽镜像网站服务器IP地址

镜像网站看似一个完整的站点,其实每次用户访问镜像网站的时候,镜像网站还是会抓取调用被镜像网站的数据,所以我们可以屏蔽被镜像网站服务器的IP,来禁止抓取我们的网站的数据。

第一步:获取镜像网站的服务器IP

1、、把以下代码保存成 ip.php 文件,并放到网站的根目录下

<?php
//飞鸟慕鱼博客
$ip = $_SERVER['REMOTE_ADDR'];
@file_put_contents('ip.txt',$ip);
?>

2、使用镜像网站的网址访问此文件,

http://镜像网站的网址/ip.php

3、打开网站根目录下的"ip.txt"文件,就能得到镜像网站的ip地址啦

第二步:屏蔽镜像网站的服务器IP

1、apache 服务器可以通过修改 .htaccess 文件来实现

将以下代码,添加到 .htaccess 文件中即可,如果没有 .htaccess 文件请自定创建,

Order Deny, Allow
Deny from 127.0.0.1

127.0.0.1:为要屏蔽的IP地址,多个IP地址可以用空格隔开

2、nginx 服务器可以修改 nginx.conf 来禁止IP的访问

nginx 安装目录,conf文件夹,找到nginx.conf 文件,并编辑

在 http{} 和 server{} 分别加入以下代码

deny 127.0.0.1;
deny 192.0.0.1;

以上的IP地址,为要屏蔽的访问者IP地址

PS:如果你使用的 zblog 建站程序,可以下载我的 墨初网站禁止访问插件 插件在屏蔽掉指定的IP哦

HTML代码方案防止镜像

如果镜像网站屏蔽掉了被镜像网站的js代码,那么我们可以使用html代码来解决,利用 img 的 onerror 事件

方法1:

<img style="display:none" src=" " onerror='this.onerror=null;var hosturl="feiniaomy." + "com"; var str1=hosturl; str2="docu"+"ment.loca"+"tion.host"; str3=eval(str2) ;if( str1!=str3 && str3!="cache.baiducontent.com" && str3!="webcache.googleusercontent.com" && str3!="c.360webcache.com" && str3!="cncc.bingj.com" && str3!="snapshot.sogoucdn.com" ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "hosturl" + ")";eval(do_action) }' />

将上面代码中的 

hosturl="feiniaomy." + "com";

改成自己域名,比如百度的

hosturl="www."+"baidu" + ".com";

方法2:

<img style="display:none" src=" " onerror="if (window.location.host.search('feiniaomy.com') == -1) {window.location.href = 'https://www.feiniaomy.com';}" />

将代码中的网址,替换成自己的即可使用。

注意:方法2 可以会对搜索引擎的快照造成干扰,请谨慎使用