Dragon
龙笑天龙笑天  2017-10-22 00:40 龙笑天下 隐藏边栏 |   263 条评论  11,008 
文章评分 262 次,平均分 4.9
导语: 本文粗略的介绍什么是恶意镜像网站,以及相关防范镜像的方法,如有错误或遗漏,敬请不宁赐教。【20171022 重要更新,详情请看方法 4~】

网站被恶意镜像怎么办 一段代码轻松搞定(全面版) wordpress

有时候你会发现,你在搜索引擎输入网站名称的时候,出来的网站信息是你们的,但是域名却是一个陌生的,这种情况可以基本确定网站被镜像了,那么究竟什么叫网站被镜像?

恶意镜像,也叫恶意克隆,恶意解析,是指有人通过域名 A 记录直接解析别人 IP 地址,从而得到一个在访问者眼中完全相同网站的过程。其工作原理基本上是这样子的:有用户访问镜像站点时,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户,实质上还是在读取原站的数据。严谨一点的解释:通过复制整个网站或部分网页内容并分配以不同域名和服务器,以此欺骗搜索引擎对同一站点或同一页面进行多次索引的行为 。

友情提示:本站Dragon 主题已经自带集成了反镜像功能,主题设置里一键开启即可。

网站被镜像的危害

通俗的讲,恶意镜像者意图利用自己有一定权重的域名进行威压,通过某些手段复制了你的站点,除了域名不一样之外,其他内容一模一样,用户或许根本无法分辨。甚至对于一些新的站点,搜索引擎都会迷惑到底哪个是真的站点,那么就有可能正牌的网站被删除收录,而盗版的却被搜索引擎青睐。

虽然目前我们还不知道恶意镜像我们的网站到底有什么意图,但肯定对我们没什么好处,如果他这个域名有点什么不健康的信息,那么我们被镜像的站点有可能被污染掉,所以还是要警惕这个现象。

如何知道自己的网站是否被镜像

复制自己网站的完整标题(PS:查看自己站点首页源码,其中<title>龙笑天下 - 分享悲伤;共享快乐</title>),然后在谷歌和百度等搜索引擎里搜索,如搜索:intitle 龙笑天下 - 分享悲伤;共享快乐,如果有其他网站的网站标题、描述及网站内容跟你的一样,只有域名不一样,那就是被镜像了。

如何处理网站被镜像

这类镜像看似一个完整的站点,其实上是每次用户访问镜像站点,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户。实质上还是在读取原站的数据。以下龙笑天下就列举几种解决方法,大家自行取舍使用!

方法 1:查清镜像网站的主机 ip,通过禁止 ip 来解决

本教程基于 WordPress 程序,其他系统请自测!

1、获取镜像服务器 ip。注:这个 IP 可能不是 ping 到他域名的 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);
?>

2、然后访问你网站的镜像站点,在地址后面加.../ip.php,然后你就会在网站根目录找到 ip.txt 文件了,打开复制里面的 ip 地址。

3、然后打开你的.htaccess 文件,在后面加上如下代码(自行修改为刚刚获得的 ip)

#添加 IP 黑名单
Order Deny,Allow
Deny from 162.158.72.179

当然,如果你使用 CDN,可以直接在 CDN 后台添加 ip 黑名单

这个时候你再刷新一下镜像站点,是不是已经 403 报错了呢?这个时候已经解决了这个镜像站点,然后就等待蜘蛛将其解决掉吧。

此方法的缺点就是如果镜像网站更换了 ip,那我们的屏蔽就失败了

方法 2:JS 来防护

在头部标签:取自 @boke112 导航

<head></head>

里加上下面的 JS 代码:

<script type="text/javascript">
if (document.location.host != "www.ilxtx.com") {
location.href = location.href.replace(document.location.host,'www.ilxtx.com');
}
</script>

或加上以下的 JS 代码:

<script type="text/javascript">
rthost = window.location.host;
if (rthost != "www.ilxtx.com") {
top.location.href = "https://www.ilxtx.com";
}
</script>

注意:将上面代码中的www.ilxtx.com改为你网站的首页主地址,如果我上面填写的不是我网站的主地址 www.ilxtx.com,而是 ilxtx.com 的话,就会导致网站一直刷新!

注:经过本站测试,如果镜像站屏蔽了 JS,则该方法失效。所以,最好把方法 2 和方法 3 结合使用!

方法 3:js 被屏蔽后防止镜像的方法

将以下代码加到网站的 header.php 中:代码取自 @boke112

<div style="display:none;">
<script>proxy2016 = false;</script>
<img src="" onerror='setTimeout(function(){if(typeof(proxy2016)=="undefined"){window.location.host="www.ilxtx.com";}},3000);'>
</div>

有些网站会屏蔽掉 JS 代码(如下面的代码) :

<script>...</script>

所以 <script>proxy2016 = false;</script> 代码将被过滤掉,img 的 onerror 设置超时时间 3000 毫秒,将运行函数部分,检测是否还存在 proxy2016 字符,如果没有找到就会将主机的 URL 改为 www.ilxtx.com;为了安全起见,将 js 部分可以使用 js 代码混淆(本站“JS 代码混淆” 工具站长之家 JS 混淆工具)。

本站的混淆结果如下:

<div style="display:none;">
<script>proxy2016 = false;</script>
<img src=" " onerror='setTimeout(function(){if(typeof(proxy2016)=="undefined"){window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x6f\x73\x74"]="\x77\x77\x77\x2e\x69\x6c\x78\x74\x78\x2e\x63\x6f\x6d";}},3000);'>
</div>

经过我的测试,此代码在 Chrome、IE11 和 360 极速浏览器上均有效,会跳转到源站的原文章页!在 Firefox 上则无效果,镜像的文章页并不会跳转到原站...... 将代码中 img 标签的 src 引用地址改为空格或无效的图片地址后,在 Firefox 上也起作用了!

方法 4:借助 img 的 onerror 事件

20161119 更新(增加搜狗快照支持):此方法使用了后,会导致百度快照、谷歌快照、必应快照和搜狗快照等跳到 404 页面(360 搜索快照则不会~),奈何不知怎么弄,2016-11-10 再次经过张戈的指导,将原代码中的:if( str1!=str3 ) 改为 :if( str1!=str3 && str3!="cache.baiducontent.com" && str3!="webcache.googleusercontent.com" && str3!="c.360webcache.com" && str3!="cncc.bingj.com" && str3!="snapshot.sogoucdn.com" ) 。估计要等快照更新时才能知道效果了!

20161127:经过验证,上述更新已经起作用了!具体效果,请点我~

20171022 更新:从张戈那看到,这段代码会因为 onerror 死循环造成浏览网页的电脑高负载(CPU 飙升),因此在代码 onerror 触发事件中加入 onerror 清空机制,即加入this.onerror=null。【博客网页导致电脑 CPU 飙升的问题解决记录

通过拆分域名链接与镜像站比对,然后用 img 标签 src 空值触发 onerror 来执行 js 比对,比对失败则跳转回源站。

①、WordPress 专用版

经过 @张戈 童学的不断改进(IE 不支持 window.stop() 函数,所以“20160909 版本”失效...),已经完美的适配 Firefox、Chrome、IE11 和 360 极速浏览器,而且可以跳转至源站的相应文章页,在此衷表感谢!下面 3 段任选一个即可。效果请看这里:http://www.ilxtx.com.3s3s.org/the-shawshank-redemption-1994.html

代码如下:(复制粘贴到主题的 functions.php 最后一个?>之前)

/**
* 网站被恶意镜像怎么办 一段代码轻松搞定(全面版) - 龙笑天下
* https://www.ilxtx.com/mirrored-website.html
* 最后更新时间:20171022    发布时间:20160912
* 出自:zhangge.net
*/
add_action('wp_footer','lxtx_deny_mirrored_websites');
function lxtx_deny_mirrored_websites(){
    $currentDomain = 'www" + ".ilxtx." + "com';
    //  $currentDomain = '"zhangge." + "net"';
    echo '<img style="display:none" src=" " onerror=\'this.onerror=null;var str1="'.$currentDomain.'";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," + "\"' . $currentDomain .'\"" + ")";eval(do_action) }\' />';
}

Ps:如果是丢到 wp_head,经过测试发现图片放到 head,浏览器会自动进行错误调整,导致一些本来在 head 的元素被丢到了 body 当中,比如 style.css,估计网页标准中 head 里面就不应该放置图片,所以移到了 footer 当中。

或者
或者
Tips:如果想像“20160909 版本”一样有个提示语,可将上面这段代码改为此
20160909 版本

②、HTML 通用版

既然是利用 js 代码,那么就能用到如何 html 页面当中了。要不是为了可以放到 wp 的 functions.php,都没必要写成 php 的模式,直接用 html 代码即可:

<img style="display:none" src=" " onerror='this.onerror=null;var currentDomain="www." + "ilxtx" + ".com"; var str1=currentDomain; 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," + "currentDomain" + ")";eval(do_action) }' />

将以上代码中的:var currentDomain="www." + "ilxtx" + ".com"; 自行拆分成自己的域名,避免被镜像代码替换掉,比如:var currentDomain="zhangge." + "net";

然后将代码添加到网站的 <body> 之后即可(不建议放置到 <head> 里面,具体原因上文已说明),这个版本适合任何网页。

方法 5:通过禁止某些 User Agent 特征来防

服务器反爬虫攻略:Apache/Nginx/PHP 禁止某些 User Agent 抓取网站-BG
服务器反爬虫攻略:Apache/Nginx/PHP 禁止某些 User Agent 抓取网站

服务器反爬虫攻略:Apache/Nginx/PHP 禁止某些 User Agent 抓取网站

我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守 robots 规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如 YY 蜘蛛(Yis...

参考上面这篇文章来禁止 UA 为 PHP 的抓取网页,从而达到防镜像的目的!

①、PHP 通用版:

将下面的代码贴到网站入口文件 index.php 中的第一个<?php之后即可:

//防止恶意 HTTP_USER_AGENT 采集
$ua = $_SERVER['HTTP_USER_AGENT'];
$now_ua = array('FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot','PHP'); 
if(!$ua) {
header("Content-type: text/html; charset=utf-8");
    die('请勿采集本站,采集者木有小 JJ!请正常访问,并认准【龙笑天下网】官方网址!');
}else{
    foreach($now_ua as $value )
    if(eregi($value,$ua)) {
    header("Content-type: text/html; charset=utf-8");
    die('请勿采集本站,采集者木有小 JJ!请正常访问,并认准【龙笑天下网】官方网址!');
    }
}

②、Wordpress 适用版

如果使用上面的 php 版本,WordPress 每次更新就会需要操作 index.php,比较麻烦,因此弄个专版。

将下面的代码贴到 functions.php 中的最后一个?>之前即可:

/**
* 网站被恶意镜像怎么办 一段代码轻松搞定(全面版) - 龙笑天下
* https://www.ilxtx.com/mirrored-website.html
* 出自:zhange.net
*/
//防止恶意 HTTP_USER_AGENT 采集
add_action('wp_head', 'lxtx_deny_mirrored_request', 0);
function lxtx_deny_mirrored_request()
{
$ua = $_SERVER['HTTP_USER_AGENT'];
$now_ua = array('FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot','PHP'); 
if(!$ua) {
header("Content-type: text/html; charset=utf-8");
wp_die('请勿采集本站,采集者木有小 JJ!请正常访问,并认准【龙笑天下网】官方网址!');
}else{
    foreach($now_ua as $value )
    if(eregi($value,$ua)) {
    header("Content-type: text/html; charset=utf-8");
    wp_die('请勿采集本站,采集者木有小 JJ!请正常访问,并认准【龙笑天下网】官方网址!');
    }
}
}

经过测试,在 functions.php 中加入此代码后,打开镜像站后显示“Internal Server Error”,强制刷新后显示我们设置好的提示文字“请勿采集本站,采集者木有小 JJ!请正常访问,并认准【龙笑天下网】官方网址!”。

本站目前发现的恶意镜像域名

dijicat.com
lapaleo.com
iaroex.com
disauvi.com
3s3s.org
ytlqpo.com
s3.gvirabi.com
hdtmail.com
dimyapi.com

更多镜像网站等你提供~

在这些域名前面加上你们自己的的域名,看看有没有被恶意镜像。

友情提示:建议方法 2 和方法 3 一起使用!方法 4 包含方法 2 和方法 3~

「点点赞赏,手留余香」

1人已赞赏

  • darvee

    Darvee: 给大佬买饮料~~

    ¥ 20.00

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

龙笑天
龙笑天 关注:32    粉丝:36 最后编辑于:2020-07-29
互助分享,互联网本该如此!

发表评论

表情 贴图 链接 私密 格式 签到
最赞评论
  1. Koolight
    Koolight 评论达人 LV.3 来自天朝的朋友 Safari浏览器 534.30  Android 4.4.2 PE-CL00 Build/HuaweiPE-CL00 湖北省荆州市 电信

    @龙笑天src=” ”一个空格链接直接是指向当前页面,其他(比如 src=”nothing”)的会指向一个 404 错误页面。

  2. Koolight
    Koolight 评论达人 LV.3 来自天朝的朋友 Safari浏览器 534.30  Android 4.4.2 PE-CL00 Build/HuaweiPE-CL00 广东省广州市 电信

    @boke112导航

    # 屏蔽恶意 UA
    RewriteCond %{HTTP_USER_AGENT} "PHP/5.4.45"
    RewriteRule ^(.*)$ http://www.d9y.net
    

    通过这个办法可以屏蔽 UA 为 PHP/5.4.45 的镜像站,如果要屏蔽所有 PHP 的,估计得写通配符了。

  3. 爆爆小妹
    爆爆小妹 评论达人 LV.2 来自天朝的朋友 谷歌浏览器 61.0.3163.100 Windows 7 河南省新乡市 联通

    这个实用,好东西不少啊! [憨笑]

  1. damon
    damon 来自天朝的朋友 搜狗浏览器 2.X Windows 7 湖北省武汉市 电信

    这个方法 2,有没有办法把域名隔断写啊,这样直接写成自己域名,镜像直接将域名全站替换成他们的了

    106楼 2020-06-12 14:22
    0 0 回复
  2. damon
    damon 来自天朝的朋友 搜狗浏览器 2.X Windows 7 湖北省武汉市 电信

    这个 proxy2016 我可以换一个名称吗,还有我们写 header.php 了,会影响内页打开吗(会不会内页全部跳转首页去了)

    105楼 2020-06-11 09:52
    0 0 回复
  3. 叶忠文博客
    叶忠文博客 来自天朝的朋友 火狐浏览器 70.0 Windows 10 广东省深圳市 电信

    这个很有帮助

    104楼 2019-10-31 16:59
    0 0 回复
  4. 陈叔叔
    陈叔叔 来自天朝的朋友 谷歌浏览器 74.0.3729.169 Windows 7 福建省宁德市 电信

    多谢大佬的文章总结,已经加上文章中的解决代码了,坐等镜像站点完蛋

    103楼 2019-10-31 14:31
    0 0 回复
  5. 轩沫博客
    轩沫博客 来自天朝的朋友 谷歌浏览器 63.0.3239.132 Windows 7 陕西省安康市 联通

    方法 4 的 WP 专用版第一种代码的 add_action('wp_footer','lxtx_deny_mirrored_websites'); 可以改为 add_action('wp_footer'); 吗?

    102楼 2019-07-05 14:29
    0 0 回复
  6. wordpress建站吧
    wordpress建站吧 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 10 四川省成都市 移动

    如果内容被采集而做的镜像站点呢

    101楼 2019-06-29 23:20
    0 0 回复
  7. 码酷博客
    码酷博客 来自天朝的朋友 谷歌浏览器 75.0.3770.80 Windows 7 河北省石家庄市 电信

    直接!检测是不是指定网址,如果不是跳转回来不就好!写 php 里!他替换不了!

    100楼 2019-06-25 08:37
    0 0 回复
  8. 瓜瓜 Hong Kong 谷歌浏览器 58.0.3029.110 Windows 7 香港 电讯盈科有限公司

    遇到了丧心病狂的反代,它把 onerror 这个关键字替换掉了,怎么破 [衰]

    99楼 2019-05-16 15:44
    0 0 回复
  9. linking
    linking 来自天朝的朋友 谷歌浏览器 63.0.3239.132 Windows 10 广东省深圳市 电信

    你好,如果我是 WordPress 多站点的怎么办?采用方法一、WordPress 专版,二级的域名会被强制跳转到主域,有解决方法吗?谢谢

    98楼 2019-02-02 17:36
    0 0 回复
  10. wordpress建站吧
    wordpress建站吧 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 10 四川省成都市 移动

    这招厉害,镜像站点有时候真不知道真么对付

    97楼 2019-01-28 20:51
    0 0 回复
  11. 耐腐蚀泵
    耐腐蚀泵 来自天朝的朋友 谷歌浏览器 71.0.3578.98 Windows 7 湖南省湘潭市 移动

    网站被镜像,与文中不同的是欺骗了百度蜘蛛,镜了我的内容。特地留意感谢,赠送明文友链一个:http://b2b.liudaoshi.com/home/siteinfo/wid/319.html 加入到我的私人收藏 。

    96楼 2019-01-08 14:15
    0 0 回复
  12. 辛辛苦苦
    辛辛苦苦 来自天朝的朋友 微信浏览器 6.5.2.501 Windows 7 安徽省合肥市 电信

    龙哥,我不懂代码,看不懂这个,我的站点(sshui.cn)被 http://m.luanhuadi.com/(pc 端) http://www.6lebobet.com/(移动端) http://www.zzxinchuang.com/ 镜像,我们程序说他解决不了,该做的都做了,我不知道怎么办,龙哥有什么办法吗

    95楼 2018-12-06 17:32
    0 0 回复
  13. duddududdudududdududud
    duddududdudududdududud 来自天朝的朋友 微信浏览器 6.7.3.1360  HUAWEI NXT-TL00 Build/HUAWEINXT-TL00 浙江省温州市 电信IDC机房

    不能英文评论,搞笑了吧

    94楼 2018-10-31 16:35
    0 0 回复
  14. 青山
    青山 评论达人 LV.1 来自天朝的朋友 搜狗浏览器 2.X Windows 7 江西省萍乡市 电信

    为什么的盗版的反而更受搜索引擎青睐呢

    93楼 2018-10-28 09:41
    0 0 回复
  15. jkbdzz
    jkbdzz 来自天朝的朋友 谷歌浏览器 69.0.3497.100 Windows 10 广东省珠海市 电信

    龙哥,我的网址被镜像了,2 和 3 代码一起使用的,我的网址 www.jkbdgw.com,镜像网站的网址:www.39ysw39.com,可看搜狗搜索快照,我发现并没有阻止镜像,虽然自动跳转 404 页面,另外我的主网址 www.jkbdgw.com,在查看百度收录的快照这篇文章上 https://www.jkbdgw.com/h-nd-592.html,发现会自动跳转到你的网址上面。

    92楼 2018-10-26 08:26
    0 0 回复
  16. 萧瑟
    萧瑟 来自天朝的朋友 谷歌浏览器 69.0.3497.100 Windows 7 河南省南阳市镇平县 联通

    不错的教程,突然发现自己博客被镜像了,刚好又搜到了龙大佬的教程。谢谢分享

    91楼 2018-10-11 16:14
    0 0 回复
扫一扫二维码分享