老听说有人的网站被恶意镜像,于是我先收藏几种解决方法。
镜像站看似一个完整的站点,其实每次用户访问镜像站点,他的小偷程序就会来正版的网站查询数据,并修改相关链接然后呈献给用户。实质上还是在读取原站的数据,我们只需要屏蔽到抓取我们数据的那个主机ip就可以了。
方法一:.htaccess文件禁ip
1、获取镜像服务器ip
复制如下代码,新建一个php文件,并命名为“ip.php”上传到你的网站根目录
<?php $file = "ip.txt";//保存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,复制里面的ip地址。
3、然后打开你的.htaccess文件,在后面加上如下代码(自行修改为刚刚获得的ip)
#添加IP黑名单 Order Deny,Allow Deny from 180.97.106.161
这个时候你再刷新一下镜像站点,是不是已经403报错了呢?这个时候已经解决了这个镜像站点,然后就等待蜘蛛将其解决掉吧。
如果你在使用CDN,可以直接在CDN后台添加他的ip黑名单。
这个时候你再刷新一下镜像站点,发现已经403报错了。
方法二:一段JS代码解决镜像(已失效)
把下面js代码加入到<head></head>中,访问镜像网站就会直接跳转到源网站。
<script type="text/javascript"> if (document.location.host != "im.acirno.com") { location.href = location.href.replace(document.location.host,'im.acirno.com'); } </script>
注意:代码中的网址一定要填你的网站主网址。此方法简单有效,就算有网页被误导至镜像网站,也能很快的被“传送”回来,能防止绝大多数类似于此类的镜像站点,非常值得推荐。
方法三:
之前的JS方法已经失效,我写了一个针对wordpress的新js方法,通过拆分域名链接与镜像站比对,然后用img标签src空值触发onerror来执行js比对,比对失败则跳转回源站。
代码如下:(复制粘贴到主题的functions.php最后一个?>之前)
// 防镜像 add_action('wp_footer','kimsom_reverse_proxy_defense'); function 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(\'\u6b64\u7ad9\u4e3a\u6076\u610f\u955c\u50cf\u7ad9\uff01\u5c06\u7acb\u5373\u4e3a\u60a8\u8df3\u8f6c\u5230\u6e90\u7ad9\uff01\');if (!!(window.attachEvent && !window.opera)){document.execCommand(\'stop\');}else{ window.stop();}var str4=\'wind\'+\'ow.loca\'+\'tion.rep\'+\'lace(str3)\';eval(str4);}">'; }