Dragon
  • 使用营销软件出现“该程序已停止工作”的三种解决方案:https://www.5izz.com/368.html
站长站长  2019-04-14 17:20 吾爱站长 隐藏边栏 |   抢沙发  79 
文章评分 16 次,平均分 5.0

网站被镜像了怎么办?

网站镜像是什么?如何判断?

一些做SEO的伙伴发现自己在百度搜索自己的网站的时候出现了域名不同但是内容完全和我们自己网站一样的网站,这种情况就可以判断为我们自己的网站被别人镜像了。最简单的查看方法就是在百度上面搜索:intitle 我们网站的标题 ,比如搜索:intitle 吾爱站长 - 网络营销学习全网整合营销推广工具软件互联网营销资源站,如果百度上出现了很多标题一样但是域名不一样的网站,这个就说明了网站被镜像了。

网站被恶意镜像后有哪些危害?

如何查看是否被镜像
那么到底什么是镜像呢?恶意镜像又被称为恶意解析,也被称作为恶意克隆。一般是别人用一些特殊的技术手段将我们的网站完全复制一个出来。除了域名不同,网站的内容完全和我们的网站相同。这些镜像网站的工作原理一般是当用户访问镜像的网站的时候,这个网站的程序就会自动来原网站来调取数据,然后修改相关的链接之后展现给用户,这种实际上系统资源还是利用的原来的站点的。这样用户和搜索引擎无法分辨哪个是真正的站点,哪个是镜像出来的站点。所以就会有可能导致正版网站有可能被搜索引擎停止收录,甚至删除已经被收录过的页面。并且,如果他的这个域名有不健康的内容那么有可能我们的站点也会受到相应的污染,严重者会被拦截报毒或者K站的情况。

那么我们应该怎么处理网站镜像呢?

1.通过屏蔽IP来防护网站被镜像
我们知道网站镜像的原理就是别人采集复制我们的网站,或者直接解析我们的网站内容进行展现,所以我们只需要屏蔽掉对方网站主机的IP即可。下面就以wordpress程序为例,其他程序的请自己测试。
我们首先要获取对方服务器的IP,这个IP有可能是对方域名所绑定的IP,也有可能不是,这个我们可以通过网站日志查看下哪些IP访问异常。如果对方是解析我们网站的话,我们可以通过下面的方法来获取对方的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);
?>

然后访问镜像了你网站的站点,在地址后面加上.../ip.php这段代码,然后你的网站根目录会出现ip.txt文件,我们打开这个文件之后就会看到一个IP地址。IP获取之后我们就需要屏蔽对方的IP,以wordpress为例,我们找到网站的根目录的.htaccess文件。我们编辑下这个文件,我们添加如下的代码(代码里的IP修改成我们从ip.txt里面复制的IP):

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

如果你的网站采用的CDN加速的话,我们可以直接在CDN后台添加IP黑名单。此时如果你刷新下镜像的网站,如果对方网站是403报错的话,就说明我们已经处理完毕了,剩下的就交给蜘蛛来处理了。

2.通过js来防护网站被镜像
在网站的头部(也被称作为页眉或者head)

<head></head>

标签里面添加以下代码:

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

或者加上以下js代码

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

需要注意的是,代码中的www.5izz.com域名要换成你的主域名,如果填写错误的话,会导致网站一直在刷新的状态。但是这个也是有缺点的,如果对方的镜像网站屏蔽了js的话这个方法是不能用的,所以方法1和方法2结合使用效果更佳。

3.如果对方屏蔽了js,应该如何防止被镜像?
找到网站的页眉,也就是header.php文件,我们编辑这个文件添加如下代码:

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

有些网站是屏蔽js代码比如下面的这个:

<script>...</script>

所以

<script>proxy2016 = false;</script> 

代码将被过滤掉,img 的 onerror 设置超时时间 3000 毫秒,将运行函数部分,检测是否还存在 proxy2016 字符,如果没有找到就会将主机的URL改为www.5izz.com;为了安全起见,将js部分可以使用js代码混淆,可以使用站长工具进行代码混淆《代码混淆工具》比如本站的混淆结果如下:

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

经过测试,这代码在Chrome、IE11、360极速浏览器上都有效,并且会跳转到原来网站的文章页,如果需要火狐浏览器生效的话需要将代码里面的img标签的src地址修改成空或者无效图片地址就可以了。

4.借助img的Onerror事件来进行跳转防止镜像
此方法就是通过拆分域名与镜像站对比,然后用img标签src空值触发onerror来执行js比对,比对失败则跳转回源站。
①、WordPress专用版
具体的代码如下,需要复制到functions.php最后一个?>之前:

add_action('wp_footer','lxtx_deny_mirrored_websites');
function lxtx_deny_mirrored_websites(){
    $currentDomain = 'www" + ".5izz." + "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 当中。

或者这段代码
add_action('wp_footer','lxtx_deny_mirrored_websites');
function lxtx_deny_mirrored_websites(){
    $currentDomain = "www' + '.5izz.' + 'com";
    //  $currentDomain = "zhangge' + '.' + 'net";
    echo '<img style="display:none" src="nothing" 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) }" />';
}


或者这段代码

add_action('wp_footer','lxtx_kimsom_reverse_proxy_defense', 99);
function lxtx_kimsom_reverse_proxy_defense(){
    $currentDomain = '"www." + "5izz" + ".com"';
    echo '<img id="inlojv-rpd" style="display: none;" src="nothing" data-url="'.home_url().'" />';
}

②、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." + "5izz" + ".com"; 自行拆分成自己的域名,避免被镜像代码替换掉,比如: var currentDomain="jszseo." + "com";
然后将代码添加到网站的之后即可(不建议放置到里面,具体原因上文已说明),这个版本适合任何网页。

方法5:通过禁止某些User Agent特征来防止镜像
①、php通用版:
把下面的代码放在index.php中的第一个 如果使用上面的php版本,WordPress每次更新就会需要操作index.php,比较麻烦,因此弄个专版。
将下面的代码贴到functions.php中的最后一个?>之前即可:

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('请勿采集本站,否则会娶不到老婆喝凉水都塞牙!请正常访问,并认准【吾爱站长】官方网址!');
}else{
    foreach($now_ua as $value )
    if(eregi($value,$ua)) {
    header("Content-type: text/html; charset=utf-8");
    wp_die('请勿采集本站,否则会娶不到老婆喝凉水都塞牙!请正常访问,并认准【吾爱站长】官方网址!');
    }
}
}

经过测试,在functions.php中加入此代码后,打开镜像站后显示“Internal Server Error”,强制刷新后显示我们设置好的提示文字“请勿采集本站,否则会娶不到老婆喝凉水都塞牙!请正常访问,并认准【吾爱站长】官方网址!”。

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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

站长
站长 关注:0    粉丝:25
3年网络营销经验,懂得SEO(5年SEO经验),邮件营销,QQ营销,论坛引流等等,本站站长!
×

予人玫瑰,手有余香

打赏 站长

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论

表情 链接 私密 格式 签到

扫一扫二维码分享