关于我们 RRS sitemaps 网站地图

首页 > SEO基础 > SEO优化 > 正文

SEM论坛

「SEO优化」怎么处理网站镜像?如何判断

2019-07-01 18:19:23 |  评论:0  |  点击:  |  SEM论坛

  【SEO优化】怎么处理网站镜像?如何判断

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

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

  【SEO优化】怎么处理网站镜像?如何判断

如何查看是否被镜像

 

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

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

  #添加 IP 黑名单Order Deny,AllowDeny 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)=="undefined"){window["location"]["host"]="www.5izz.com";}},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”,强制刷新后显示我们设置好的提示文字“请勿采集本站,否则会娶不到老婆喝凉水都塞牙!请正常访问,并认准【吾爱站长】官方网址!”。

关键字: