SEO分享:彻底禁止搜索引擎抓取/收录动态页面或指定路径的方法

最近张戈博客收录出现异常,原因并不明朗。我个人猜测存在如下几个直接原因:

  • 更换主题,折腾时带来过多错误页面或间歇性访问错误;
  • 直接线上折腾 Nginx 缓存和缩略图,可能导致间歇性大姨妈;
  • 新发文章瞬间被转载,甚至是整站被采集,可能导致“降权”;
  • 百度居然开始收录动态页面,而且还在持续抓取动态页面。

对于前三个,已发生的已无法改变,要发生的也无法阻止。对于转载和采集,我也只能在 Nginx 加入 UA 黑名单和防盗链机制,略微阻碍一下了,但是实际起不到彻底禁止作用,毕竟整个天朝互联网大环境就是这样一个不好的风气,很多人都不愿意花时间、用心写文章,喜欢不劳而获的转载甚至是篡改抄袭。

对于第四点,真是忍无可忍。我很想对百度说,我忍你很久了。明明 robots 里面加入了禁止抓取这些动态地址和某些路径,但是蜘蛛依然每天抓取,而且还收录了!收录也没事,关键收录了动态地址居然不收录静态地址了??这是要闹咋样啊?

案例①:

案例②:

案例③:

以上案例中的地址,我通过百度站长平台的 robots 检验结果都是被禁封的,真不知道百度怎么想的

所以,我决定用极端手段,彻底禁止这些不听话的蜘蛛抓取那些我不想被收录的页面!robots 协议显然还是太温柔了!下面看张戈怎么放大招吧!

一、Nginx 规则

张戈博客用的是 Nginx,所以直接在 server  中新增如下规则即可:

#################################################
#   禁止蜘蛛抓取动态或指定页面规则 By 张戈博客       #
#   原文地址:http://zhangge.net/5043.html       #
#   申    明:转载请尊重版权,保留出处,谢谢合作!     #
#################################################
 
server
    {
    listen 80;
    server_name zhangge.net;
    index index.html index.htm index.php default.html default.htm default.php;
    root  /home/wwwroot/zhangge.net;
    #### 新增规则【开始】 ####
    #初始化变量为空
    set $deny_spider "";
    #如果请求地址中含有需要禁止抓取关键词时,将变量设置为y:
    if ($request_uri  ~* "\?replytocom=(\d+)|\?p=(\d+)|/feed|/date|/wp-admin|comment-page-(\d+)|/go") {
         set $deny_spider 'y';
    }
    #如果抓取的UA中含有spider或bot时,继续为变量赋值(通过累加赋值间接实现nginx的多重条件判断)
    if ($http_user_agent ~* "spider|bot") {
     set $deny_spider "${deny_spider}es";
    }
    #当满足以上2个条件时,则返回404,符合搜索引擎死链标准
     if ($deny_spider = 'yes') {
         return 403; #如果是删除已收录的,则可以返回404
         break;
     }
     #### 新增规则【结束】 ####
#以下规则略...

Ps:就是将上述代码中“新增规则【开始】”到“新增规则【结束】”内容添加到我们网站的 Nginx 配置-- server 模块 中的 root 指令之后即可。

二、 Apache 规则

Apache 测试了半天总是 500 错误,暂时先放弃了,有时间再来调整!

我自己测试写的规则如下,感兴趣的朋友可以自行测试看看,也许是我环境的问题。

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|spider|bot) [NC]
RewriteCond %{REQUEST_URI} (/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+)) [NC]
RewriteRule ^(.*)$ - [F]

Ps:大概思路和 Nginx 一致,既匹配了蜘蛛 UA,又匹配了禁止关键词的抓取,直接返回 403(如何返回 404,有知道的朋友请留言告知下,测试成功的朋友也敬请分享一下代码,我实在没时间折腾了。)

三、PHP 代码版

/**
* PHP比robots更彻底地禁止蜘蛛抓取指定路径代码 By 张戈博客
* 原文地址:http://zhangge.net/5043.html
* 申   明:原创代码,转载请注保留出处,谢谢合作!
* 使用说明:将一下代码添加到主题目录的functions.php当中即可。
*/
ob_start("Deny_Spider_Advanced");
function Deny_Spider_Advanced() {
    $UA = $_SERVER['HTTP_USER_AGENT'];
    $Request_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
    $Spider_UA  = '/(spider|bot|)/i'; //定义需要禁止的蜘蛛UA,一般是spider和bot
    //禁止蜘蛛抓取的路径,可以参考自己的robots内容,每个关键词用分隔符隔开,需注意特殊字符的转义
    $Deny_path  = '/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+)/i';
    //如果检测到UA为空,可能是采集行为
    if(!$UA) {
        header("Content-type: text/html; charset=utf-8");
        wp_die('请勿采集本站,因为采集的站长木有小JJ!');
    } else {
        //如果发现是蜘蛛,并且抓取路径匹配到了禁止抓取关键词则返回404
        if(preg_match_all($Spider_UA,$UA) && preg_match_all($Deny_path,$Request_uri)) {
             //header('HTTP/1.1 404 Not Found');  
             //header("status: 404 Not Found");       
             header('HTTP/1.1 403 Forbidden'); //可选择返回404或者403(有朋友说内链404对SEO不太友好)
             header("status: 403 Forbidden");
              
              
        }
    }
}

使用很简单,将上述 PHP 代码添加到主题目录下放 functions.php 当中即可。

四、测试效果

测试效果很简单,直接利用百度站长平台的抓取诊断工具即可:

点开看看可以发现真的是返回 404:

最后,结合张戈博客之前分享的《SEO 技巧:Shell 脚本自动提交网站 404 死链到搜索引擎》即可将这些无用的收录全部删除:

有朋友说我这个是黑帽手法,用户可以访问,而搜索引擎却 404,很适合淘宝客网站的商品外链。是什么手法我不清楚,我只知道实用就好!特别是张戈博客那些外链,都是用/go?url=这个路径来跳转的,现在这样处理后,就算搜索引擎不遵循 robots 硬是要抓取,就只能抓到 404 了!

好了,本文就分享到这,这种做法和张戈博客之前分享的《SEO 分享:彻底禁止搜索引擎收录非首选域名的方法》一样,属于极端优化做法,实施后,我们的索引肯定会大量下降,因为很多垃圾索引或收录都将被删除,但是这是良性的做法,因为优质且重复的内容才是提高排名的王道!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏進无尽的文章

扒虫篇- Bug日志 Ⅷ

不执行的原因是 在VC中使用这个ImageUploaderManager时,需要设置为全局变量,如果是局部变量的话,很快会被销毁掉,其中的代理自然不会执行了。

1913
来自专栏哲学驱动设计

产品前端重构(TypeScript、MVC框架设计)

最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容。 公司期望把某一管理类信息系统从项目代码中抽取、重构为一个可复用的产品。该系统的...

2608
来自专栏向治洪

Android逆向工程

在Root前提下,我们可以使用Hooker方式绑定so库,通过逆向方式篡改数值,从而达到所谓破解目的。然而,目前无论是软件加固方式,或是数据处理能力后台化,还是...

29310
来自专栏信安之路

我是如何通关信安之路巅峰挑战赛的

我滴个天啊。。。。。弱密码随意登陆。。。。。不好意思,这题我真是非预期解法,具体的预期解法,之前信安之路文章已发,就不仔细讲述啦!

1726
来自专栏波涛汹涌

在阴影中:Vawtrak(银行木马病毒)意图通过添加新的数据源使得自己更加隐蔽

在Dridex木马活动短暂停止的同时,这个恶意软件背后的犯罪人员立马去寻找(开发)新的交付渠道(攻击方法,钓鱼方式),这看起来像是其他的恶意软件供应商将自己定位...

1383
来自专栏phodal

让你的「微信小程序」运行在Chrome浏览器上,让我们使用WebStorm

「微信小程序」的开发框架体验起来,还不错——自带了UI框架。但是问题是他的IDE,表现起来相当的糟糕——其实主要是因为,我当时买WebStorm License...

6616
来自专栏Crossin的编程教室

【Python 第3课】IDE

昨天的课发出去之后,有不少同学发来了反馈,有完成截屏的,也有遇到问题的。一些问题突然让我意识到,很多地方自己描述得不是很到位,会产生歧义,或者干脆就很难听懂。比...

2846
来自专栏coding

听说,撸代码,ide与vim更配哦vim折腾记vim常用命令

在选择编辑器上面,我是一个纠结的人,曾经年少的我执着地追求一款万能的编辑器,可以支持所有编辑语言,灵活可定制,可纯粹用键盘操作。符合这种条件的编辑器,非vim莫...

1002
来自专栏小樱的经验随笔

深入理解USB流量数据包的抓取与分析

在一次演练中,我们通过wireshark抓取了一个如下的数据包,我们如何对其进行分析?

3472
来自专栏视频咖

如何写出一手好的小程序代码,从架构说起

? 作为微信小程序底层 API 维护者之一,经历了风风雨雨、各种各样的吐槽。为了让大家能更好的写一手小程序,特地梳理一篇文章介绍。如果有什么吐槽的地方,欢迎去...

5072

扫码关注云+社区

领取腾讯云代金券