nginx 中禁止爬虫

模拟 抓取:

               curl -I -A 'Baiduspider' hello.net 

产生的效果:

                     HTTP/1.1 200 OK 
                    Server: nginx 

                    Date: Wed, 20 May 2015 07:26:48 GM

以上说明允许爬虫

如果是 HTTP/1.1 403  forbidden

----------------------------------------------------------------------------------------

方法 1,

在server段中书写

多种http user agent 用管道  | 

server {

    if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot")  

    {  
        return 403;  

    } 

}

拒绝以wget方式的httpuseragent,增加如下内容 
## Block http user agent - wget ## 
if ($http_user_agent ~* (Wget) ) { 
return 403; 

## Block Software download user agents ## 
if ($http_user_agent ~* LWP::Simple|BBBike|wget) { 
return 403; 


方法2

使用robots.txt文件:例如阻止所有的爬虫爬取,但是这种效果不是很明显

User-agent: *
Disallow: /

方法3. 单独分离

进入到nginx安装目录下的conf目录,将如下代码保存为 agent_deny.conf 
cd /usr/local/nginx/conf 
vim agent_deny.conf 


#禁止Scrapy等工具的抓取 
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { 
     return 403; 


#禁止指定UA及UA为空的访问 
if ($http_user_agent ~ "FeedDemon|JikeSpider|^$" ) { 
     return 403;              


#禁止非GET|HEAD|POST方式的抓取 
if ($request_method !~ ^(GET|HEAD|POST)$) { 
    return 403; 

然后,在网站相关配置中的  location / {  之后插入如下代码: 
include agent_deny.conf; 


最后建议使用方法一

你可能感兴趣的:(爬虫)