什么是恶意镜像?网站被恶意镜像怎么办?(亲测有效)

转载  boke112导航   2019-09-17 17:12:15 更新  技术文档

网站被恶意镜像,这个问题应该是所有草根站长最苦恼的问题,也是最深恶痛疾的事情。为了让大家对恶意镜像有一个清晰的认识,所以 boke112 特意在网络上收集整理一些关于恶意镜像的知识(如恶意镜像定义、危害与影响、防止镜像方法等)跟大家分享一下。

什么是恶意镜像?

恶意镜像,也叫恶意克隆,恶意解析,是指有人通过域名 A 记录直接解析别人 IP 地址,从而得到一个在访问者眼中完全相同网站的过程。其工作原理基本上是这样子的:有用户访问镜像站点时,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户,实质上还是在读取原站的数据。

网站被恶意镜像对有什么影响?

恶意镜像者意图通过自己有一定权重的域名进行威压,让搜索引擎对刚刚成立的网站产生迷惑,对同时存在和解析的两个域名分不清真假,不知如何抉择。有的搜索引擎技术比较成熟,可以分清真假,但是也有部分搜索引擎傻傻地分不清楚,有可能会选择恶意者的域名,同时删去原站长的域名

至于恶意者得手之后会做些什么?我们无法推测,但是无论如何都不会是对我们有利的。千万不要因为镜像网站给我们带来的一些流量而庆幸,因为带来流量的同时也会带走你的用户,在搜索引擎迷惑的同时,用户也会无所适从,不知道哪个是真,哪个是假。如果恶意者域名或者其它部分含有敏感不健康的信息,也可能会导致受害者IP被封掉。

如何查看自己的网站是否被别人镜像?

在搜索引擎中限定搜索范围在自己网站的完整标题中(PS:查看自己站点首页源码,其中<title>这里就是站点的网站标题</title>),如搜索: intitle boke112 导航-最实用的博主交流平台。具体如下图所示:

什么是恶意镜像?网站被恶意镜像怎么办?(亲测有效) 如何查看自己的网站是否被别人镜像?

从上图搜索结果中可以看出,有几个跟我们站点标题一模一样的,但是域名却不是我们的,说明 boke112 导航已经被恶意镜像了。

网站被恶意镜像怎么办?

网络上已经有很多大神分享了如何防止网站被恶意镜像的办法,现在就推荐几种 boke112 测试真正有效的防镜像方法,具体选择哪种方法就请大家根据自己的情况自由选择吧。

方法一:借助imgoneerror事件防恶意镜像

1WordPress站点

将以下代码添加到主题 functions.php 文件最后一个?>即可。其他类似 js 防镜像方法可以不用了,不过用了也不会冲突。

  1. add_action('wp_footer','deny_mirrored_websites');
  2. function deny_mirrored_websites(){
  3.     $currentDomain = 'boke112." + "com'; //此处自行拆分一下自己的域名即可
  4.     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 ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "\"' . $currentDomain .'\"" + ")";eval(do_action) }\' />';
  5. }

以上代码来自张戈博客,其中,'boke112." + "com'需要自行修改成自己的域名即可,带有 www 的可以修改成"www." + "boke112" + ".com"

2HTML通用站点

将以下代码添加到 WordPress 站点的 footer.php 文件中,其他建站程序请自行搞定,这个版本适合任何网页。

  1. <img style="display:none" src=" " onerror='this.onerror=null;var currentDomain="boke112." + "com"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) }' />

以上代码来自张戈博客,其中,'boke112." + "com'需要自行修改成自己的域名即可,带有 www 的可以修改成"www." + "boke112" + ".com"

方法二:通过禁止某些User Agent特征防恶意镜像

1PHP通用版

将以下代码加入到 PHP 网站根目录的 index.php 的<?php 之后即可。

  1. /**
  2.  * PHP 通用版 禁止 UA 为空或含有 PHP 的请求 By 张戈博客
  3.  * 原文地址:http://zhang.ge/5101.html
  4. **/
  5. $ua = $_SERVER['HTTP_USER_AGENT'];
  6. if(!$ua || preg_match('/PHP/i', $ua)) {
  7.     header("Content-type: text/html; charset=utf-8");
  8.     die('请勿采集本站,因为采集的站长木有小 JJ!');
  9. }

2WP专用版

将以下代码添加到主题 functions.php 文件最后一个?>即可。

  1. <img style="display:none" src=" " onerror='this.onerror=null;var currentDomain="boke112." + "com"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) }' />

3Nginx服务器版本

将以下规则加入到 nginx 的 vhost 当中 的配置文件的第一个 location 之前,然后重载 Nginx 即可。

  1. if ($http_user_agent ~* "PHP") {
  2.      return 403;
  3. }

总结一下

根据 boke112 导航使用情况来看,建议同时使用方法一和方法二,这样可以在禁止 UA 某些特征防止镜像失效的情况下,还可以通过借助 img 的 oneerror 事件防恶意镜像。最后强调一下,这些方法目前都是有效的,但是正所谓“道高一尺魔高一丈”,谁也无法保证这些方法能够长期有效。所以最有效的方法还是努力经营好自己的网站,把权重、流量、名气做上去,这样才能达成“一直被模仿,但从未被超越”的目标,到那时也就不怕什么恶意镜像了。

拓展延伸:

如果想通过禁止某些 User Agent 特征,同时达成防主流采集、垃圾爬虫、部分 SQL 注入和防网站被恶意镜像,可以通过以下方法实现。

PS:以下三个方法是上文“通过禁止某些 User Agent 特征防恶意镜像”的拓展延伸,所以只能二选一,不能同时使用。

特别声明:以下三个方法的代码来自(或修改自)张戈博客的《服务器反爬虫攻略:Apache/Nginx/PHP 禁止某些 User Agent 抓取网站》。

1Ngnix代码

进入到 nginx 安装目录下的 conf 目录,将如下代码保存为 agent_deny.conf。

cd /usr/local/nginx/conf

vim agent_deny.conf

  1. #禁止 Scrapy 等工具的抓取
  2. if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
  3.      return 403;
  4. }
  5. #禁止指定 UA 及 UA 为空的访问
  6. if ($http_user_agent ~ " PHP|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
  7.      return 403;
  8. }
  9. #禁止非 GET|HEAD|POST 方式的抓取
  10. if ($request_method !~ ^(GET|HEAD|POST)$) {
  11.     return 403;
  12. }

然后,在网站相关配置中的 location / { 之后插入如下代码:

  1. include agent_deny.conf;

如张戈博客的配置:

  1. [marsge@Mars_Server ~]$ cat /usr/local/nginx/conf/zhangge.conf
  2. location / {
  3.         try_files $uri $uri/ /index.php?$args;
  4.         #这个位置新增 1 行:
  5.         include agent_deny.conf;
  6.         rewrite ^/sitemap_360_sp.txt$ /sitemap_360_sp.php last;

保存后,执行如下命令,平滑重启 nginx 即可:

  1. /usr/local/nginx/sbin/nginx -s reload

2PHP代码

将如下代码放到 PHP 网站根目录 index.php 中的第一个 <?php 之后即可:

  1. //获取 UA 信息
  2. $ua = $_SERVER['HTTP_USER_AGENT'];
  3. //将恶意 USER_AGENT 存入数组
  4. $now_ua = array('PHP','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');
  5. //禁止空 USER_AGENT,dedecms 等主流采集程序都是空 USER_AGENT,部分 sql 注入工具也是空 USER_AGENT
  6. if(!$ua) {
  7. header("Content-type: text/html; charset=utf-8");
  8. wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
  9. }else{
  10.     foreach($now_ua as $value )
  11. //判断是否是数组中存在的 UA
  12.     if(eregi($value,$ua)) {
  13.     header("Content-type: text/html; charset=utf-8");
  14.     wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
  15.     }
  16. }

3WordPress专用版

将以下代码添加到主题 functions.php 文件最后一个?>即可。

  1. if(!is_admin()) {
  2.     add_action('init', 'deny_mirrored_request', 0);
  3. }
  4. function deny_mirrored_request()
  5. {
  6.    //获取 UA 信息
  7. $ua = $_SERVER['HTTP_USER_AGENT'];
  8. //将恶意 USER_AGENT 存入数组
  9. $now_ua = array('PHP','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');
  10. //禁止空 USER_AGENT,dedecms 等主流采集程序都是空 USER_AGENT,部分 sql 注入工具也是空 USER_AGENT
  11. if(!$ua) {
  12. header("Content-type: text/html; charset=utf-8");
  13. wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
  14. }else{
  15.     foreach($now_ua as $value )
  16. //判断是否是数组中存在的 UA
  17.     if(eregi($value,$ua)) {
  18.     header("Content-type: text/html; charset=utf-8");
  19.     wp_die('请勿采集本站,因为采集的站长木有小 JJ!');
  20.     }
  21. }
  22. }

你可能感兴趣的文章

文章标签: ,   ,  
版权声明:本文为转载文章,来源于 boke112导航 ,版权归原作者所有!转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请发邮件至[email protected],确认后马上更正、删除,谢谢!

发表评论

  1. Koolight
    Koolight @回复

    女站长根本不怕骂,因为她根本就没有小JJ。

    • 懿古今
      懿古今2016-09-25 12:23  回复

      @Koolight[呲牙] 这个其实也就是防君子而已,我们添加上只是求一个心理安慰而已

    • 亚洲数据 - Asiaidc.net
      亚洲数据 - Asiaidc.net2017-08-20 10:58  回复

      @Koolight呵呵,说的很有趣~

  2. 我爱动感单车网
    我爱动感单车网 @回复

    [偷笑] 现在我不怎么关心这个了,主要是这个代码不断在改进中,我都懒得花时间折腾了。

  3. 摩天之星
    摩天之星 @回复

    那如果输入title,出现很多一样的,都是自己的域名,但是都做了301跳转到想要优化的域名,会不会有影响,会不会被百度判断作弊

  4. 南通SEO
    南通SEO @回复

    最近发现我另一个站www.hbgynj.com被别人镜像了,用php版本的在index.php里插入代码的那个办法有用,不过返回错误是
    Fatal error: Call to undefined function wp_die() in /www/web/hbgynj_com/public_html/index.php on line 15,这个是不是正常的呢!
    最纳闷的是我的云锁怎么没起作用呢!!!

    • 懿古今
      懿古今2016-09-30 22:36  回复

      @南通SEO没用过云锁,对于这种镜像站点,能够让用户访问镜像站跳转会到我们站点,或者直接访问不了就成功了,其他的我倒很少关注

      • 南通SEO
        南通SEO2016-09-30 22:45  回复

        @懿古今有道理,没必要折腾太多,目的达到了就行

    • 龙笑天
      龙笑天2016-10-07 13:45  回复

      @南通SEO把wp_die换成die试试~ 貌似wp_die是用于wordpress的 [流汗]

  5. 明月登楼
    明月登楼 @回复

    经过我近半个月的努力终于算是把恶意镜像的嚣张气焰给整治下去了!

    • 懿古今
      懿古今2016-10-18 16:20  回复

      @明月登楼[强] 我的也差不多打下去了,现在搜索还有一个,不过点击都是跳转回来的,感觉还行

      • 我是谁
        我是谁2017-05-16 15:38  回复

        @懿古今按照上面的方法进行设置了 镜像站会跳到我们站的404页面,这样正常吗,是不是成功了? 还有问题,就是点击查看百度或者谷歌网页快照的时候,不会正常显示网站页面了,网页快照页面也是跳到我们站的404页面,这样有没有影响?

        • 懿古今
          懿古今2017-05-16 21:40  回复

          @我是谁使用了这个快照页面确实是不正常,所以如果没有被镜像的话,可以不折腾

  6. 肉松
    肉松 @回复

    我是来看图片的. [哈哈]
    先学习一下备用,这几天折腾的百度都不收录我了。

    • 懿古今
      懿古今2017-08-16 10:42  回复

      @肉松[偷笑] 我现在也不敢折腾了,还是老老实实更新内容吧