IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    网站被恶意镜像怎么办 一段代码轻松搞定(全面版)

    小残发表于 2016-09-25 18:37:05
    love 0

    有时候你会发现,你在搜索引擎输入网站名称的时候,出来的网站信息是你们的,但是域名却是一个陌生的,这种情况可以基本确定网站被镜像了,那么究竟什么叫网站被镜像?

    恶意镜像,也叫恶意克隆,恶意解析,是指有人通过域名A记录直接解析别人IP地址,从而得到一个在访问者眼中完全相同网站的过程。其工作原理基本上是这样子的:有用户访问镜像站点时,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户,实质上还是在读取原站的数据。严谨一点的解释:通过复制整个网站或部分网页内容并分配以不同域名和服务器,以此欺骗搜索引擎对同一站点或同一页面进行多次索引的行为 。

    网站被镜像的危害

    通俗的讲,恶意镜像者意图利用自己有一定权重的域名进行威压,通过某些手段复制了你的站点,除了域名不一样之外,其他内容一模一样,用户或许根本无法分辨。甚至对于一些新的站点,搜索引擎都会迷惑到底哪个是真的站点,那么就有可能正牌的网站被删除收录,而盗版的却被搜索引擎青睐。

    虽然目前我们还不知道恶意镜像我们的网站到底有什么意图,但肯定对我们没什么好处,如果他这个域名有点什么不健康的信息,那么我们被镜像的站点有可能被污染掉,所以还是要警惕这个现象。

     

    如何知道自己的网站是否被镜像

    复制自己网站的完整标题(PS:查看自己站点首页源码,其中 <title>小残博客 – 关注网络安全</title>),然后在谷歌和百度等搜索引擎里搜索,如搜索:intitle 小残博客 – 关注网络安全如果有其他网站的网站标题、描述及网站内容跟你的一样,只有域名不一样,那就是被镜像了。

     

    如何处理网站被镜像

    这类镜像看似一个完整的站点,其实上是每次用户访问镜像站点,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户。实质上还是在读取原站的数据。

     

    方法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);
    ?>

    本教程基于WordPress程序,其他系统请自测!

    2、然后访问你网站的镜像站点,在地址后面加…/ip.php,然后你就会在网站根目录找到ip.txt文件了,打开复制里面的ip地址。

    3、然后打开你的.htaccess文件,在后面加上如下代码(自行修改为刚刚获得的ip)

    #添加IP黑名单
    Order Deny,Allow
    Deny from 127.0.0.1

    当然,如果你使用CDN,可以直接在CDN后台添加ip黑名单

    这个时候你再刷新一下镜像站点,是不是已经403报错了呢?这个时候已经解决了这个镜像站点,然后就等待蜘蛛将其解决掉吧。

    此方法的缺点就是如果镜像网站更换了ip,那我们的屏蔽就失败了

     

    方法2:JS来防护

    在头部标签:取自 @boke112导航

    <head></head>

    里加上下面的JS代码:

    <script type="text/javascript">
    if (document.location.host != "www.exehack.net") {
    location.href = location.href.replace(document.location.host,'www.exehack.net');
    }
    </script>

    或加上以下的JS代码:

    <script type="text/javascript">
    rthost = window.location.host;
    if (rthost != "www.exehack.net") {
    top.location.href = "http://www.exehack.net";
    }
    </script>

    注意:将上面代码中的www.exehack.net改为你网站的首页主地址,如果我上面填写的不是我网站的主地址 www.exehack.net,而是 exehack.net的话,就会导致网站一直刷新!

    注:经过本站测试,如果镜像站屏蔽了JS,则该方法失效。所以,最好把方法2和方法3结合使用!

     

    方法3:Js被屏蔽后防止镜像的方法

    将以下代码加到网站的header.php中:代码取自 @boke112

    <div style="display:none;">
    <script>proxy2016 = false;</script>
    <img src="" onerror='setTimeout(function(){if(typeof(proxy2016)=="undefined"){window.location.host="www.ilxtx.com";}},3000);'>
    </div>

    有些网站会屏蔽掉JS代码(如下面的代码) :

    <script>...</script>

    所以 <script>proxy2016 = false;</script> 代码将被过滤掉,img的onerror设置超时时间3000毫秒,将运行函数部分,检测是否还存在proxy2016字符,如果没有找到就会将主机的URL改为www.ilxtx.com;为了安全起见,将js部分可以使用js代码混淆(站长之家JS混淆工具)。

    本站的混淆结果如下:

    <div style="display:none;">
    <script>proxy2016 = false;</script>
    <img src=" " onerror='setTimeout(function(){if(typeof(proxy2016)=="undefined"){window["\x6c\x6f\x63\x61\x74\x69\x6f\x6e"]["\x68\x6f\x73\x74"]="\x77\x77\x77\x2e\x69\x6c\x78\x74\x78\x2e\x63\x6f\x6d";}},3000);'>
    </div>

    经过我的测试,此代码在Chrome、IE11和360极速浏览器上均有效,会跳转到源站的原文章页!在Firefox上则无效果,镜像的文章页并不会跳转到原站…… 将代码中img标签的src引用地址改为空格或无效的图片地址后,在Firefox上也起作用了!

     

    方法4:借助Img的Onerror事件

    通过拆分域名链接与镜像站比对,然后用img标签src空值触发onerror来执行js比对,比对失败则跳转回源站。

    ①、WordPress专用版

    经过 @张戈 童学的不断改进(IE不支持 window.stop() 函数,所以“20160909版本”失效…),已经完美的适配Firefox、Chrome、IE11和360极速浏览器,而且可以跳转至源站的相应文章页,在此衷表感谢!下面3段任选一个即可。

    代码如下:(复制粘贴到主题的functions.php最后一个?>之前)

    /**
    * 网站被恶意镜像怎么办 一段代码轻松搞定(全面版)
    * 出自:zhangge.net
    */
    add_action('wp_head','deny_mirrored_websites');
    function deny_mirrored_websites(){
        $currentDomain = 'www" + ".exehack." + "net';
        //  $currentDomain = '"exehack." + "net"';
        echo '<img style="display:none" src=" " 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) }\' />';
    }

     

    方法5:通过禁止某些User Agent特征来防

    参考此文:《服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站》,禁止UA为PHP的抓取网页!

    ①、PHP通用版:

    将下面的代码贴到网站入口文件index.php中的第一个 <?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!请正常访问,并认准【小残博客】官方网址!');
        }
    }

    ②、Wordpress适用版

    如果使用上面的php版本,WordPress每次更新就会需要操作index.php,比较麻烦,因此弄个专版。

    将下面的代码贴到 functions.php 中的最后一个 ?>之前即可:

    /**
    * 网站被恶意镜像怎么办 一段代码轻松搞定(全面版)
    * 出自:zhange.net
    */
    //防止恶意HTTP_USER_AGENT采集
    add_action('wp_head', 'deny_mirrored_request', 0);
    function 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!请正常访问,并认准【小残博客】官方网址!');
    }else{
        foreach($now_ua as $value )
        if(eregi($value,$ua)) {
        header("Content-type: text/html; charset=utf-8");
        wp_die('请勿采集本站,采集者木有小JJ!请正常访问,并认准【小残博客】官方网址!');
        }
    }
    }

    经过测试,在functions.php中加入此代码后,打开镜像站后显示“Internal Server Error”,强制刷新后显示我们设置好的提示文字“请勿采集本站,采集者木有小JJ!请正常访问,并认准【龙笑天下网】官方网址!”。

    本站目前发现的恶意镜像域名

    dijicat.com
    lapaleo.com
    iaroex.com
    disauvi.com
    3s3s.org
    ytlqpo.com
    s3.gvirabi.com
    hdtmail.com
    dimyapi.com

    更多镜像网站等你提供~

    在这些域名前面加上你们自己的的域名,看看有没有被恶意镜像。

    友情提示:建议方法2和方法3一起使用!方法4包含方法2和方法3~


    作者: 小残 绳命不息 |折腾不止 |我一天不折腾心里难受
    转载请以链接形式注明本文地址:http://www.exehack.net/3818.html
    版权所有© 小残's Blog – 关注网络安全 | 本网站内容采用 BY-NC-SA 进行授权。


沪ICP备19023445号-2号
友情链接