用nginx屏蔽爬虫的方法

Posted walkersss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用nginx屏蔽爬虫的方法相关的知识,希望对你有一定的参考价值。

nginx屏蔽爬虫的方法

1. 使用"robots.txt"规范

在网站根目录新建空白文件,命名为"robots.txt",将下面内容保存即可。

User-agent: BaiduSpider
Disallow:
User-agent: YisouSpider
Disallow:
User-agent: 360Spider
Disallow:
User-agent: Sosospider
Disallow:
User-agent: SogouSpider
Disallow:
User-agent: YodaoBot
Disallow:
User-agent: Googlebot
Disallow:
User-agent: bingbot
Disallow:
User-agent: *
Disallow: /


2. nginx
将下面代码添加到"location / { }" 段里面,比如伪静态规则里面。

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

#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "BaiduSpider|JiKeSpider|YandexBot|Bytespider|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadW
ebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bo
t|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|Ezooms|^$" ) {
return 404;
}

#禁止非GET|HEAD|POST方式的抓取, ~ 为模糊匹配 ~* 为模糊匹配不区分大小写
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}

if ($http_user_agent ~ "Mozilla/4.0\\ \\(compatible;\\ MSIE\\ 6.0;\\ Windows\\ NT\\ 5.1;\\ SV1;\\ .NET\\ CLR\\ 1.1.4322;\\ .NET\\ CLR\\ 2.0.50727\\)" ) {
return 404;
}
if ($http_user_agent ~ "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)") {
return 404;
}

if ($http_user_agent ~ "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X)(compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)") {
return 404;
}
if ($http_user_agent ~ "Mozilla/5.0 (Linux; android 10; VCE-AL00 Build/HUAWEIVCE-AL00; wv)") {
return 404;
}


测试一下:

curl -I -A "Mozilla/5.0Macintosh;IntelMacOSX10_12_0AppleWebKit/537.36KHTML,likeGeckoChrome/60.0.6967.1704Safari/537.36;YandexBot" http://www.xxxxx.com

返回 403 表示设置成功!

以上是关于用nginx屏蔽爬虫的方法的主要内容,如果未能解决你的问题,请参考以下文章

NGINX屏蔽垃圾爬虫

Nginx 禁用IP IP段

Nginx 禁用IP IP段

java爬虫系列第五讲-如何使用代理防止爬虫被屏蔽?

Python爬虫2------爬虫屏蔽手段之代理服务器实战

Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器