真实有效防止网站被恶意镜像的方法(终极版)
%20网站内容被镜像是一个令人非常头疼的问题,特别对已经拥有固定用户群以及固定流量的站点,伤害非常大,今天分享几个有效防止被镜像的方法:%20
%20
%20一、JS跳转法(通用法一)%20
%20
%20即通过JS判断当前域名,如果不是本域名则跳转回本域名。但镜像网站都会过滤掉JS代码甚至JS文件,那么我们需要加入代码混淆和触发事件。%20
%20
%20将下面代码中的地址改为自己的域名地址添加到主题目录header.php中适当位置即可(此方法有效)!%20
%20
<script%20type="text/JavaScript"> if(window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x6f\x73\x74"]%20!=%20'www.freexyz.net'%20&&%20window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x6f\x73\x74"]%20!=%20'freexyz.net'){ %20%20%20%20alert('警告!检测到该网站为恶意镜像站点,将立即为您跳转到官方站点!'); %20%20%20%20window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x72\x65\x66"]%20=%20'http://'+'www.freexyz.net/'; } </script> <div%20style="display:none;"> <script>nofreexyznet%20=%20false;</script> <img%20src="%20"%20onerror='setTimeout(function(){if(typeof(nofreexyznet)=="undefined"){window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x6f\x73\x74"]="www.freexyz.net";}},3000);'> </div>
%20
%20上述代码为两段代码组合而成,相辅相承,配合使用来防止不同技术处理的镜像站。%20
%20
%20此方法优点:简单、通用。%20
%20
%20缺点:代码必须混淆。%20
%20
%20二、JS跳转法(通用法二)%20
%20
%20同方法一,利用拆分法将代码拆分,不需要再对代码进行混淆。%20
%20
%20将下面代码中的地址改为自己的域名地址添加到主题目录header.php中适当位置即可(此方法有效)!%20
%20
<img%20style="display:none"%20src="%20"%20onerror='var%20currentDomain="www."%20+%20"freexyz"%20+%20".net";%20var%20str1=currentDomain;%20str2="docu"+"ment.loca"+"tion.host";%20str3=eval(str2)%20;if(%20str1!=str3%20&&%20str3!="cache.baiducontent.com"%20&&%20str3!="webcache.googleusercontent.com"%20&&%20str3!="c.360webcache.com"%20&&%20str3!="snapshot.sogoucdn.com"%20&&%20str3!="cncc.bingj.com"%20){%20do_action%20=%20"loca"%20+%20"tion."%20+%20"href%20=%20loca"%20+%20"tion.href"%20+%20".rep"%20+%20"lace(docu"%20+"ment"+".loca"+"tion.ho"+"st,"%20+%20"currentDomain"%20+%20")";eval(do_action)%20}'%20/>
%20
%20此方法优点:简单,通用。%20
%20
%20缺点:暂无。%20
%20
%20三、JS跳转法(WordPress专用)%20
%20
%20看到龙笑天下网站中归纳的防镜像方法,比较全面,并且已有更方便的方法来解决镜像问题,故跟进。%20
%20
%20将下面代码中的地址改为自己的域名地址添加到当前所用的主题的%20functions.php%20中即可(此方法有效)!%20
%20
//防止网站被恶意镜像 add_action('wp_footer','deny_mirrored_websites'); function%20deny_mirrored_websites(){ %20%20%20%20$currentDomain%20=%20'www"%20+%20".freexyz."%20+%20"net'; %20%20%20%20echo%20'<img%20style="display:none"%20src="%20"%20onerror=\'var%20str1="'.$currentDomain.'";str2="docu"+"ment.loca"+"tion.host";str3=eval(str2);if(%20str1!=str3%20&&%20str3!="cache.baiducontent.com"%20&&%20str3!="webcache.googleusercontent.com"%20&&%20str3!="c.360webcache.com"%20&&%20str3!="snapshot.sogoucdn.com"%20&&%20str3!="cncc.bingj.com"%20){%20do_action%20=%20"loca"%20+%20"tion."%20+%20"href%20=%20loca"%20+%20"tion.href"%20+%20".rep"%20+%20"lace(docu"%20+"ment"+".loca"+"tion.ho"+"st,"%20+%20"\"'%20.%20$currentDomain%20.'\""%20+%20")";eval(do_action)%20}\'%20/>'; }
%20
%20此方法优点:方便、避免WordPress升级导致失效。%20
%20
%20缺点:只适用于WordPress。%20
%20
%20四、屏蔽恶意镜像站UA%20
%20
%20根据抓取服务器日志分析得知lapaleo.com此镜像站UA为”PHP/5.4.45″%20
%20
%20那么通过.htaccess将此UA屏蔽掉即可(此方法有效)!%20
%20
#%20屏蔽恶意UA RewriteCond%20%{HTTP_USER_AGENT}%20"PHP/5.4.45" RewriteRule%20^(.*)$%20http://www.freexyz.net
%20
%20将上面代码中加到.htaccess中即可。%20
%20
%20此方法优点:一劳永逸。%20
%20
%20缺点:只能针对某些特殊UA的镜像站点。%20
%20
%20五、屏蔽镜像站IP%20
%20
%20根据抓取服务器日志分析可抓取镜像站的IP地址(关闭CDN情况下)%20
%20
%20再通过.htaccess将镜像站IP屏蔽掉即可(此方法有效)!%20
%20
%20如果开启了CDN,则需要将下面三个IP地址加入CDN黑名单!%20
%20
#%20屏蔽恶意IP Order%20Allow,Deny Allow%20from%20all Deny%20from%20142.4.100.25 Deny%20from%20188.129.143.73 Deny%20from%20104.236.180.129
%20
%20将上面代码中加到.htaccess中即可。%20
%20
%20上面三个IP地址为镜像站的IP地址(其中某镜像IP地址会隔段时间改变)%20
%20
%20此方法优点:最原始,最暴力。%20
%20
%20缺点:镜像网站IP收集不全并且某些镜像站IP会改变。%20
%20
%20好了,通过上面几种方法基本上可以防止网站被镜像的问题了。%20
%20
%20PS:修改前注意先备份文件,特别是.htaccess文件。%20
%20
%20建议同时使用方法(一)/(二)/(三)、方法四、方法五。%20
%20
%20方法一、方法二、方法三不要同时使用,因为三种方法原理相同,同时使用可能会出现某些莫名其妙问题……%20
%20%20%20%20%20%20
%20
%20%20%20%20%20%20%20%20网站