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

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

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

  这类镜像看似一个完整的站点,其实上是每次用户访问镜像站点,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户。实质上还是在读取原站的数据。以下龙笑天下就列举几种解决方法,大家自行取舍使用!

  方法1:查清镜像网站的主机ip,通过禁止ip来解决

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

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

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

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

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

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

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

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

  方法 2:JS 来防护

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

<head></head>

  里加上下面的 JS 代码:

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

  或加上以下的JS代码:

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

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

  另一种JS防护方法,代码摘自GoodBoyboy's Blog

<script>
(function () {
    var encodedValidDomain = 'd3d3LmlseHR4LmNvbQ=='; //base64加密后的域名
    var encodedredirectUrl = 'aHR0cHM6Ly93d3cuaWx4dHguY29t'; //base64加密后的链接,包含协议头
    var decodedValidDomain = atob(encodedValidDomain);
    var redirectUrl = atob(encodedredirectUrl);
    var hostname = document.location.hostname;

    function createWatermark(text) {
        var watermarkDiv = document.createElement('div');
        watermarkDiv.style.pointerEvents = 'none';
        watermarkDiv.style.position = 'fixed';
        watermarkDiv.style.top = '0';
        watermarkDiv.style.left = '0';
        watermarkDiv.style.width = '100%';
        watermarkDiv.style.height = '100%';
        watermarkDiv.style.zIndex = '9999';
        watermarkDiv.style.opacity = '0.1';
        watermarkDiv.style.background = 'transparent';
        watermarkDiv.style.overflow = 'hidden';
        watermarkDiv.style.display = 'flex';
        watermarkDiv.style.justifyContent = 'center';
        watermarkDiv.style.alignItems = 'center';
        watermarkDiv.style.flexWrap = 'wrap';

        var watermarkText = document.createElement('div');
        watermarkText.innerText = text;
        watermarkText.style.color = 'black';
        watermarkText.style.fontSize = '30px';
        watermarkText.style.transform = 'rotate(-30deg)';
        watermarkText.style.whiteSpace = 'nowrap';
        watermarkText.style.margin = '20px';

        for (var i = 0; i < 100; i++) {
            watermarkDiv.appendChild(watermarkText.cloneNode(true));
        }

        document.body.appendChild(watermarkDiv);
    }

    if (hostname !== decodedValidDomain) {
        createWatermark(decodedValidDomain); //decodedValidDomain可以替换为自定义水印内容
        var userResponse = confirm("警告:您当前浏览的页面非官方页面,可能存在有害信息!建议您跳转至官方页面进行浏览!");
        if (userResponse) {
            window.location.replace(redirectUrl);
        }
    }
})();
</script>

  注:经过本站测试,如果镜像站屏蔽了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 代码混淆” 工具站长之家 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事件

  20161119 更新(增加搜狗快照支持):此方法使用了后,会导致百度快照、谷歌快照、必应快照和搜狗快照等跳到 404 页面(360 搜索快照则不会~),奈何不知怎么弄,2016-11-10 再次经过张戈的指导,将原代码中的:if( str1!=str3 ) 改为 :if( str1!=str3 && str3!="cache.baiducontent.com" && str3!="webcache.googleusercontent.com" && str3!="c.360webcache.com" && str3!="cncc.bingj.com" && str3!="snapshot.sogoucdn.com" ) 。估计要等快照更新时才能知道效果了!

  20161127:经过验证,上述更新已经起作用了!具体效果,请点我~

  20171022 更新:从张戈那看到,这段代码会因为 onerror 死循环造成浏览网页的电脑高负载(CPU 飙升),因此在代码 onerror 触发事件中加入 onerror 清空机制,即加入this.onerror=null。【博客网页导致电脑 CPU 飙升的问题解决记录

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

  ①、WordPress 专用版

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

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

/**
* 网站被恶意镜像怎么办 一段代码轻松搞定(全面版) - 龙笑天下
* https://www.ilxtx.com/mirrored-website.html
* 最后更新时间:20171022    发布时间:20160912
* 出自:zhangge.net
*/
add_action('wp_footer','lxtx_deny_mirrored_websites');
function lxtx_deny_mirrored_websites(){
    $currentDomain = 'www" + ".ilxtx." + "com';
    //  $currentDomain = '"zhangge." + "net"';
    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 && str3!="cache.baiducontent.com" && str3!="webcache.googleusercontent.com" && str3!="c.360webcache.com" && str3!="cncc.bingj.com" && str3!="snapshot.sogoucdn.com" ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "\"' . $currentDomain .'\"" + ")";eval(do_action) }\' />';
}

  Ps:如果是丢到 wp_head,经过测试发现图片放到 head,浏览器会自动进行错误调整,导致一些本来在 head 的元素被丢到了 body 当中,比如 style.css,估计网页标准中 head 里面就不应该放置图片,所以移到了 footer 当中。

  ②、HTML通用版

  既然是利用js代码,那么就能用到如何html页面当中了。要不是为了可以放到wp的functions.php,都没必要写成php的模式,直接用html代码即可:

<img style="display:none" src=" " onerror='this.onerror=null;var currentDomain="www." + "ilxtx" + ".com"; 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!="cncc.bingj.com" && str3!="snapshot.sogoucdn.com" ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "currentDomain" + ")";eval(do_action) }' />

  将以上代码中的:var currentDomain="www." + "ilxtx" + ".com"; 自行拆分成自己的域名,避免被镜像代码替换掉,比如:var currentDomain="zhangge." + "net";

  然后将代码添加到网站的 <body> 之后即可(不建议放置到 <head> 里面,具体原因上文已说明),这个版本适合任何网页。

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

  https://www.ilxtx.com/anti-web-spiders.html

  参考上面这篇文章来禁止 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 中的最后一个?>之前即可:

/**
* 网站被恶意镜像怎么办 一段代码轻松搞定(全面版) - 龙笑天下
* https://www.ilxtx.com/mirrored-website.html
* 出自:zhange.net
*/
//防止恶意HTTP_USER_AGENT采集
add_action('wp_head', 'lxtx_deny_mirrored_request', 0);
function lxtx_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!请正常访问,并认准【龙笑天下网】官方网址!”。

  原文地址:https://www.ilxtx.com/mirrored-website.html

本站原创内容,转载请注明来源:https://www.liutonghui.com/152

PHP框架的实现原理
上一篇 2017-10-04
简单有效解决Sublime Text无法安装插件的问题
下一篇 2018-03-25

评论列表(0条)

  • 暂无评论

发表评论

captcha

相关推荐

  • PHP动态滚屏无刷新加载数据

      滚屏加载,也称为滚动加载或懒加载,是一种网页设计技术,当用户滚动页面时,新内容会自动加载,无需点击&ldquo;下一页&rdquo;按钮。这种技术提高了用户体验,尤其是在处理大量数据时,如社交媒体、新闻网站和电子商务平台。   滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PHP程序,返回相应的数据,并将返回的数据追加到页面底部,从而实现了动态加载,其实就是一个......

    2013-10-24
    22240
  • 一个迷你版Smarty模板引擎,认识模板引擎原理(附代码)

      前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎。今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是对模板引擎的原理,还是有深刻的理解的。如果有什么还需要改进的地方,记得提出来。   一、什么是Smarty模板引擎:   Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,......

    2013-11-19
    20520
  • 打工人怎么做副业项目

      2014年的春节结束了,过完年了,打工人们又都回到了各自的工作岗位,新的一年在工作上有什么计划吗?其实很多人都想过平时应该做点什么副业增加自己的收入,特别是有车贷和房贷的人,压力很大,很想要多挣点钱。   其实在要做什么副业前,首先要想想你最擅长什么,相比于你做的工作以外,你还有什么特长。或者你可以把主业工作持续发挥到下班以后的时间。比方说你擅长写作,文笔不错,可以写写文章,小到一些小故事投稿到一些书刊杂志机构,赚取稿费,如果文章......

    2014-02-09
    21970
  • jQuery制作图片浮动放大,鼠标滚轮缩放功能

      点击图片居中放大显示,背景半透明遮罩,鼠标滚轮可缩放图片大小,再次点击图片恢复原始大小并关闭。 &lt;!DOCTYPE html&gt; &lt;html lang="zh-CN"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;图片点击放大居中+滚轮缩放&lt;/title&gt; &lt;script src="https://code.jqu......

    2014-08-10
    17270
  • 《暗黑破坏神2:重制版》正式发售,一代经典王者归来

      《暗黑破坏神2:重制版》已于09月24日正式发售,游戏将同步登陆包括Xbox Series X|S、Xbox One、PS4、PS5以及PC平台。游戏早前开放了预购玩家的抢先体验和所有玩家免费公测。   《暗黑破坏神2:重制版》包含了原版《暗黑破坏神2》及其资料片《毁灭之王》中的所有游戏内容,所有怪物、英雄、物品和技能等内容都进行了全面更新。此外,游戏还新增了暴雪战网功能,支持跨平台存档功能,极大提升了游戏的跨平台互动性。   ......

    2021-09-25
    21060
  • 王冰冰不能结婚离婚吗?谁规定的?

      王冰冰是央视近年来力推的知名记者,她以初恋般的清纯可爱的外貌形象走红,被称为&ldquo;央视收视密码&rdquo;。走红后的王冰冰也被受邀参加了很多节目和活动,她本人的自媒体账号也收获了500万的粉丝。   不过,人红事非多,近日,就有人爆出了王冰冰大量的个人隐私内容,她早年英语四级成绩只有369分。考了两次才合格。爆料中还提到王冰冰其实早就结过婚了,并且现在属于离婚状态。还说王冰冰19岁就和男友同居,后来被甩了,嫁给了吉林电视......

    2022-01-24
    20042
  • 苹果天价存储:奢侈还是贪婪?

      近日,苹果公司推出了全新的M3芯片14寸MacBook Pro,这款笔记本电脑以其强大的性能和出色的设计赢得了业界的广泛关注。然而,与此同时,用户对这款产品的存储方案表达了强烈的不满。8GB内存以及高昂的存储价格引发了消费者对苹果公司收费策略的质疑。   这款起步价高达12999元的M3 MacBook Pro仅配备了8GB内存,对于需要处理大量数据或运行内存密集型应用的用户来说,8GB内存可能显得捉襟见肘。尽管M3芯片的性能强大......

    2023-11-15
    6520
  • 《电脑爱好者》停刊,32年老牌数码杂志的落幕

      《电脑爱好者》这本拥有32年历史的电脑科普类刊物曾在国内计算机普及初期影响广泛,一度位列全国电脑类期刊发行量榜首,可以说是承载了一代人接触信息技术的成长记忆。近期关于该杂志停刊的消息开始多了起来,其微信公众号已经注销,官网也无法访问,官方微博上一次更新还是在2023年10月16日。这家创办于1993年的国内老牌电脑科普杂志就这样无声无息的与读者告别了。   随着互联网媒体的快速发展,传统纸媒早已跟不上海量信息的传播,人们越来越习惯通......

    2025-12-24
    10850