首页 > 系统相关 >nginx or apache前端禁收录,爬虫,抓取

nginx or apache前端禁收录,爬虫,抓取

时间:2023-08-11 15:32:00浏览次数:44  
标签:抓取 header 爬虫 spider nginx 404 wp apache UA


一、Nginx 规则

直接在 server  中新增如下规则即可:



################################################# # 禁止蜘蛛抓取动态或指定页面规则 By # ################################################# 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; } #### 新增规则【结束】 #### #以下规则略...


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更彻底地禁止蜘蛛抓取指定路径代码 * 使用说明:将一下代码添加到主题目录的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比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了!


标签:抓取,header,爬虫,spider,nginx,404,wp,apache,UA
From: https://blog.51cto.com/u_6186189/7048530

相关文章

  • #yyds干货盘点#nginx中fastcgi_params文件及相应配置
    在ubuntu服务器安装完php7.4-fdm和nginx后,发现fastcgi_params没有生成,也可能是二次安装的关系。所以临时去网上找了个手工建上。特意在这里记录下,避免下次再遇到同样的问题。#脚本文件请求的路径,也就是说当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如......
  • ​python爬虫——爬虫伪装和反“反爬”
    前言爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序,从而减少被服务器封禁的风险;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧,并提供对应的代码案例。1.User-Agent伪装User......
  • 在生产环境中使用Apache Mesos和Docker
    本文翻译自IVOVERBERK博客,Docker容器软件已受到了从科技巨头到企业的广泛注意。但是,随着容器概念转变成为现实世界中的成熟技术,那么问题就变成了:怎么样才能快速把Docker应用于生产环境中呢?介绍在生产环境中安全有效地的运行Docker容器会有很多复杂的挑战。许多复杂性挑战都是在......
  • centos7.X安装nginx – 东凭渭水流
    1.安装nginx需要使用root用户2.配置nginx源 rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm #运行如下 [root@localhost~]#rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0......
  • Jenkins +nginx 搭建前端构建环境
    欢迎访问幸福拾荒者,一个前端知识总结分享平台,与大家一起共同成长共同进步!......
  • Nginx日志分析- AWK命令快速分析日志--封禁访问请求最多、最频繁的恶意ip
    Nginx日志常用分析命令示范(注:日志的格式不同,awk取的项不同。下面命令针对上面日志格式执行)1.分析日志的方法1)总请求数cd/usr/local/nginx/logs/wc-laccess.log|awk'{print$1}'166252)独立IP数awk'{print$1}'access.log|sort|uniq|wc-l4003)每秒客户端......
  • 使用awk分析nginx访问日志access.log
    1.awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数......
  • Python处理Nginx配置的实现方法
    Nginx是一个高性能的Web服务器和反向代理服务器,它可以用于实现多种功能。在实际应用中,我们可能需要根据不同的需求修改Nginx的配置文件。本文将介绍如何使用Python来处理Nginx配置文件。一、安装必要的库为了方便地操作Nginx配置文件,我们需要安装一些Python库。其中,pyparsing和ngin......
  • Nginx配置防盗链(详细了解如何配置nginx防盗链)
     worker_processes1;#允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个events{#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100......
  • Nginx+keepalived主从双机热备自动切换解决方案
    Nginx+keepalived主从双机热备自动切换解决方案测试环境如下:系统:Ceentos6.464位主nginx服务器:192.168.122.5备nginx服务器:192.168.122.6VIP:192.168.122.15一、Nginx+keepalived安装—脚本安装#!/bin/bash#author:kuangl#mail:[email protected]#description:The......