模拟 抓取:
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;
最后建议使用方法一