终极方法有效防止网站被恶意镜像
以下代码由PHP站长网 52php.cn收集自互联网现在PHP站长网小编把它分享给大家,仅供参考 最近不少朋友在提问,网站内容被镜像是一个令人非常头疼的问题,特别对已经拥有固定用户群以及固定流量的站点,如果不及时处理或处理不当,对网站的危害是很大的。 网站镜像的意思就是通过复制整个网站或部分网页内容并分配以不同域名和服务器,以此欺骗搜索引擎对同一站点或同一页面进行多次索引的行为,这既是为什么有的网站注明禁止未授权不得做网站镜像的原因,两个网站的内容完全一样,相似度过高必然会导致自己的网站受到影响。恶意镜像,也叫恶意克隆,恶意解析,是指有人通过域名 A 记录直接解析别人 IP 地址,从而得到一个在访问者眼中完全相同网站的过程。其工作原理基本上是这样子的:有用户访问镜像站点时,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户,实质上还是在读取原站的数据。严谨一点的解释:通过复制整个网站或部分网页内容并分配以不同域名和服务器,以此欺骗搜索引擎对同一站点或同一页面进行多次索引的行为 。 如何知道自己的网站是否被镜像,复制自己网站的完整标题(PS:查看自己站点首页源码,其中 创客云-专注 wordpress 主题资源分享平台),然后在谷歌和百度等搜索引擎里搜索,如搜索:intitle 创客云-专注 WordPress 主题资源分享平台,如果有其他网站的网站标题、描述及网站内容跟你的一样,只有域名不一样,那就是被镜像了。 那么今天分享几个有效防止被镜像的方法: 一、JS 跳转法(通用法一)即通过 JS 判断当前域名,如果不是本域名则跳转回本域名。但镜像网站都会过滤掉 JS 代码甚至 JS 文件,那么我们需要加入代码混淆和触发事件。将下面代码中的地址改为自己的域名地址添加到主题目录 header.php 中适当位置即可(此方法有效)! <script type="text/javascript"> if(window["x6cx6fx63x61x74x69x6fx6e"]["x68x6fx73x74"] != 'www.freexyz.net' && window["x6cx6fx63x61x74x69x6fx6e"]["x68x6fx73x74"] != 'freexyz.net'){ alert('警告!检测到该网站为恶意镜像站点,将立即为您跳转到官方站点!'); window["x6cx6fx63x61x74x69x6fx6e"]["x68x72x65x66"] = 'http://'+'www.22vd.com/'; } </script> <div style="display:none;"> <script>nofreexyznet = false;</script> <img src=" " onerror='setTimeout(function(){if(typeof(nofreexyznet)=="undefined"){window["x6cx6fx63x61x74x69x6fx6e"]["x68x6fx73x74"]="www.freexyz.net";}},3000);'> </div> 上述代码为两段代码组合而成,相辅相承,配合使用来防止不同技术处理的镜像站。 此方法优点:简单、通用。 缺点:代码必须混淆。 二、JS 跳转法(通用法二)同方法一,利用拆分法将代码拆分,不需要再对代码进行混淆。将下面代码中的地址改为自己的域名地址添加到主题目录 header.php 中适当位置即可(此方法有效)! <img style="display:none" src=" " onerror='var currentDomain="www." + "freexyz" + ".net"; 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!="snapshot.sogoucdn.com" && str3!="cncc.bingj.com" ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "currentDomain" + ")";eval(do_action) }' /> 此方法优点:简单,通用。 缺点:暂无。 三、JS 跳转法(WordPress 专用)看到龙笑天下网站中归纳的防镜像方法,比较全面,并且已有更方便的方法来解决镜像问题,故跟进。将下面代码中的地址改为自己的域名地址添加到当前所用的主题的 functions.php 中即可(此方法有效)! //防止网站被恶意镜像 add_action('wp_footer','deny_mirrored_websites'); function deny_mirrored_websites(){ $currentDomain = 'www" + ".freexyz." + "net'; echo '<img 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!="snapshot.sogoucdn.com" && str3!="cncc.bingj.com" ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + ""' . $currentDomain .'"" + ")";eval(do_action) }' />'; } 此方法优点:方便、避免 WordPress 升级导致失效。 缺点:只适用于 WordPress。 四、屏蔽恶意镜像站 UA根据抓取服务器日志分析得知 lapaleo.com 此镜像站 UA 为"PHP/5.4.45",那么通过.htaccess 将此 UA 屏蔽掉即可(此方法有效)! # 屏蔽恶意UA RewriteCond %{HTTP_USER_AGENT} "PHP/5.4.45" RewriteRule ^(.*)$ http://www.freexyz.net 将上面代码中加到.htaccess 中即可。 此方法优点:一劳永逸。 缺点:只能针对某些特殊 UA 的镜像站点。 五、屏蔽镜像站 IP根据抓取服务器日志分析可抓取镜像站的 IP 地址(关闭 CDN 情况下),再通过.htaccess 将镜像站 IP 屏蔽掉即可(此方法有效)!如果开启了 CDN,则需要将下面三个 IP 地址加入 CDN 黑名单! # 屏蔽恶意IP Order Allow,Deny Allow from all Deny from 142.4.100.25 Deny from 188.129.143.73 Deny from 104.236.180.129 将上面代码中加到.htaccess 中即可。上面三个 IP 地址为镜像站的 IP 地址(其中某镜像 IP 地址会隔段时间改变) 此方法优点:最原始,最暴力。 缺点:镜像网站 IP 收集不全并且某些镜像站 IP 会改变。 好了,通过上面几种方法基本上可以防止网站被镜像的问题了。 PS:修改前注意先备份文件,特别是.htaccess 文件。 建议同时使用方法(一)/(二)/(三)、方法四、方法五。方法一、方法二、方法三不要同时使用,因为三种方法原理相同,同时使用可能会出现某些莫名其妙问题…… 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:ASP站长网) |