文章目录[隐藏]
一个偶然的搜索输入错误 本来要输入511遇见,结果是输入法没有打开,输入了511yujian,出来的结果很让我吃惊,很多我网站的文章被其他域名链接,果断判断自己的网站被恶意镜像了,网站找了一些办法,包括龙笑天下,book112等网站分享的一些方法,进行了阻断,所以这里要把这些技术分享出去,让更多遇到类似情况的站长方便处理。
一、如何发现自己的网站被恶意镜像
我们常用是搜索引擎有百度,好搜,BING,搜狗等等,查看自己的网站首页源码,找到 title 之间的内容。
<title>511遇见 | 不一样的遇见</title>
在各搜索引擎输入以下关键词
intitle 511遇见 | 不一样的遇见
如果出现了同样的搜索结果,而网址不一样就说明你的网站被恶意镜像了。如下图:
很明显被tiydq.net
恶意镜像了,不过你要去不同的搜索引擎试一下,目前百度搜索引擎已经升级:百度推出飓风算法,严厉打击恶劣采集,所以我测试了,只有好搜出现了恶意镜像的收录,其他都没有。
百度搜索于近日推出飓风算法,旨在严厉打击以恶劣采集为内容主要来源的网站,同时百度搜索将从索引库中彻底清除恶劣采集链接,给优质原创内容提供更多展示机会,促进搜索生态良性发展。
飓风算法会例行产出惩罚数据,同时会根据情况随时调整迭代,体现了百度搜索对恶劣采集的零容忍。优质原创站点如发现站点索引量大幅减少且流量大幅下滑现象,可在反馈中心进行反馈。
还有就是你要经常到搜索引擎的官方站长平台看看你的索引量的变化,和流量的变化,减少不可怕,可怕的是突然的暴增,这时你看看你的外链的增加情况,分析一下突然变化的原因,最安全的还是采用以上的排查方法。
解决方法1:查清镜像网站的主机Ip,通过禁止Ip来解决
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地址。比如本站的就是
http://tiydq.net/?ip.php
查看后返回:
IP Address:58.211.2.150 IP Address:58.211.2.150
3、然后打开你的.htaccess文件,在后面加上如下代码(自行修改为刚刚获得的ip)
#添加IP黑名单
Order Deny,Allow
Deny from 58.211.2.150
我们可以通过域名查询看看这个地址的一起情况
你如果使用了CDN加速,可以去里面设置成黑名单,或者使用了云锁,360网站完全卫士都可以把刚才获取的IP拉成黑名单,有一个问题就是当对方改变了IP后,上面的方法就失效了,所以我们必须采用js方法。
解决方法2:JS来防护
在头部标签:
<head></head>
里加上下面的JS代码:
<script type="text/javascript"> if (document.location.host != "www.511yj.com") { location.href = location.href.replace(document.location.host,'www.511yj.com'); } </script>
或加上以下的JS代码:
<script type="text/javascript"> rthost = window.location.host; if (rthost != "www.511yj.com") { top.location.href = "//www.511yj.com"; } </script>
注意:将上面代码中的www.511yj.com改为你网站的首页主地址,如果我上面填写的不是我网站的主地址 www.511yj.com,而是511yj.com的话,就会导致网站一直刷新!
注:经过本站测试,如果镜像站屏蔽了JS,则该方法失效。所以,最好把方法2和方法3结合使用!
解决方法3:Js被屏蔽后防止镜像的方法
将以下代码加到网站的header.php中:
<div style="display:none;"> <script>proxy2016 = false;</script> <img src="" onerror='setTimeout(function(){if(typeof(proxy2016)=="undefined"){window.location.host="www.511yj.com";}},3000);'> </div>
有些网站会屏蔽掉JS代码(如下面的代码) :
<script>proxy2016 = false;</script>
代码将被过滤掉,img的onerror设置超时时间3000毫秒,将运行函数部分,检测是否还存在proxy2016字符,如果没有找到就会将主机的URL改为www.511yj.com
;为了安全起见,将js部分可以使用js代码混淆站长之家JS混淆工具。
变为以下代码:
<script>proxy2016 = false;</script><img src="" onerror='\x73\x65\x74\x54\x69\x6d\x65\x6f\x75\x74\x28\x66\x75\x6e\x63\x74\x69\x6f\x6e\x28\x29\x7b\x69\x66\x28\x74\x79\x70\x65\x6f\x66\x28\x70\x72\x6f\x78\x79\x32\x30\x31\x36\x29\x3d\x3d\x22\x75\x6e\x64\x65\x66\x69\x6e\x65\x64\x22\x29\x7b\x77\x69\x6e\x64\x6f\x77\x2e\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x68\x6f\x73\x74\x3d\x22\x77\x77\x77\x2e\x35\x31\x31\x79\x6a\x2e\x63\x6f\x6d\x22\x3b\x7d\x7d\x2c\x33\x30\x30\x30\x29\x3b'>
解决方法4:借助Img的Onerror事件
通过拆分域名链接与镜像站比对,然后用img标签src空值触发onerror来执行js比对,比对失败则跳转回源站。
1、WordPress专用版
代码如下:(复制粘贴到主题的functions.php最后一个?>之前,以下四段人选一段
/** * 网站被恶意镜像怎么办 -转自龙笑天下 * http://www.ilxtx.com/mirrored-website.html * 出自:zhangge.net */ add_action('wp_footer','lxtx_deny_mirrored_websites'); function lxtx_deny_mirrored_websites(){ $currentDomain = 'www" + ".511yj." + "com'; // $currentDomain = '"zhangge." + "net"'; echo '<img style="display:none" src=" " onerror=\'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) }\' />'; }
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="nothing" onerror="var str1=\''.$currentDomain.'\';str2=\'docu\'+\'ment.loca\'+\'tion.host\';str3=eval(str2);if( str1!=str3 ){ do_action = \'loca\' + \'tion.\' + \'href = loca\' + \'tion.href\' + \'.rep\' + \'lace(docu\' +\'ment\'+\'.loca\'+\'tion.ho\'+\'st,\' + \'\\\'' . $currentDomain .'\\\'\' + \')\';eval(do_action) }" />'; }
add_action('wp_footer','lxtx_kimsom_reverse_proxy_defense', 99); function lxtx_kimsom_reverse_proxy_defense(){ $currentDomain = '"www." + "511yj" + ".com"'; echo '<img style="display:none" id="inlojv-rpd" src="nothing" data-url="'.home_url().'" onerror=\'var str0=document.getElementById("inlojv-rpd").attributes.getNamedItem("data-url").nodeValue;var ishttps="https:"==document.location.protocol?true:false;if(ishttps){var str1="https"+"://";}else{var str1="http"+"://";}var str2='.$currentDomain.';var str3=str1+str2;if( str0!=str3 ){location.href = location.href.replace(document.location.host,'. $currentDomain .');}\'/>'; }
add_action('wp_footer','lxtx_kimsom_reverse_proxy_defense', 99); function lxtx_kimsom_reverse_proxy_defense(){ $currentDomain = '"www." + "511yj" + ".com"'; echo '<img style="display:none" id="inlojv-rpd" src="nothing" data-url="'.home_url().'" onerror=\'var str0=document.getElementById("inlojv-rpd").attributes.getNamedItem("data-url").nodeValue;var ishttps="https:"==document.location.protocol?true:false;if(ishttps){var str1="https"+"://";}else{var str1="http"+"://";}var str2='.$currentDomain.';var str3=str1+str2;if( str0!=str3 ){alert("\u8b66\u544a\uff01\u68c0\u6d4b\u5230\u8be5\u7f51\u7ad9\u4e3a\u6076\u610f\u955c\u50cf\u7ad9\u70b9\uff0c\u5c06\u7acb\u5373\u4e3a\u60a8\u8df3\u8f6c\u5230\u5b98\u65b9\u7ad9\u70b9\uff01");location.href = location.href.replace(document.location.host,'. $currentDomain .');}\'/>'; }
摘自 @曾劲松博客
/** * 网站被恶意镜像怎么办 一段代码轻松搞定(全面版) - 龙笑天下 * http://www.ilxtx.com/mirrored-website.html */ add_action('wp_footer','lxtx_kimsom_reverse_proxy_defense'); function lxtx_kimsom_reverse_proxy_defense(){ $domain_arr = explode('//',home_url()); $domain = $domain_arr[1]; echo '<img style="display:none" id="inlojv-rpd" src="nothing" data-url="'.home_url().'" onerror="var str0=document.getElementById(\'inlojv-rpd\').attributes.getNamedItem(\'data-url\').nodeValue;var ishttps=\'https:\'==document.location.protocol?true:false;if(ishttps){var str1=\'https\'+\'://\';}else{var str1=\'http\'+\'://\';}var str2=\''.$domain.'\';var str3=str1+str2;if( str0!=str3 ){alert(\'\u8b66\u544a\uff01\u68c0\u6d4b\u5230\u8be5\u7f51\u7ad9\u4e3a\u6076\u610f\u955c\u50cf\u7ad9\u70b9\uff0c\u5c06\u7acb\u5373\u4e3a\u60a8\u8df3\u8f6c\u5230\u5b98\u65b9\u7ad9\u70b9\uff01\');if (!!(window.attachEvent && !window.opera)){document.execCommand(\'stop\');}else{ window.stop();}var str4=\'wind\'+\'ow.loca\'+\'tion.rep\'+\'lace(str3)\';eval(str4);}">'; }
2、HTML通用版
既然是利用js代码,那么就能用到如何html页面当中了。要不是为了可以放到wp的functions.php,都没必要写成php的模式,直接用html代码即可:
<img style="display:none" src=" " onerror='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) }' />
解决方法5:通过禁止某些User Agent特征来防
禁止UA为PHP的抓取网页,从而达到防镜像的目的!
1、PHP通用版:
将下面的代码贴到网站入口文件index.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!请正常访问,并认准【龙笑天下网】官方网址!'); } }
2、Wordpress适用版
将下面的代码贴到 functions.php 中
/** * 网站被恶意镜像怎么办 一段代码轻松搞定(全面版) - 龙笑天下 * http://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!请正常访问,并认准【511遇见:511yj.com】官方网址!'); }else{ foreach($now_ua as $value ) if(eregi($value,$ua)) { header("Content-type: text/html; charset=utf-8"); wp_die('请勿采集本站,采集者木有小JJ!请正常访问,并认准【511遇见:511yj.com】官方网址!'); } } }
经过测试,在functions.php中加入此代码后,打开镜像站后显示“Internal Server Error”,强制刷新后显示我们设置好的提示文字“请勿采集本站,采集者木有小JJ!请正常访问,并认准【511遇见:511yj.com】官方网址!
”。
本站目前发现的恶意镜像域名
dijicat.com
lapaleo.com
iaroex.com
disauvi.com
3s3s.org
ytlqpo.com
s3.gvirabi.com
hdtmail.com
dimyapi.com
tiydq.net
.......
更多镜像网站等你提供~
后记
本站也是遇到了被恶意镜像的情况才搜索以上文章,非自己原创,很多网站转自,本文主要节选了龙笑天下的博客,恶意镜像猛于虎也,非杀不可,选择你自己的方式,避免自己的网站流量长远丢失,维护自己的网站名誉,其实很多搜索引擎都能智能分析,不会收录一些恶意镜像的快照。