0%

Tengine配置防百度爬虫

  • 发现此xxx.xxxx.cn一直被下面这个ua爬取:
1
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
  • tengine配置if判断ua,挡掉这个爬虫

1.配置conf

1
2
3
4
5
6
7
8
9
10
11
vim xxx.xxxx.cn 
#添加以下配置
if ($http_user_agent ~ "Mozilla/5.0\ \(compatible;\ Baiduspider/2.0;\ \+http://www.baidu.com/search/spider.html")
{
return 403;
}

if ($http_user_agent ~* ^Baiduspider)
{
return 403;
}

2.测试nginx -tnginx -s reload


3.额外补充方法:

3.1 新建user-agent_deny.conf配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}

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

#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
#然后直接reload即可

3.2 添加default_server;

1
2
3
4
5
server {
listen 81 default_server;
server_name _;
return 403;
}
  • default_server:nginx的虚拟主机是通过HTTP请求中的Host值来找到对应的虚拟主机配置
  • 对于未绑定的域名指向你的服务器时,匹配不到你配置的虚拟主机域名后,会默认使用这个虚拟主机,然后直接返回403(状态码,可以自己定义,且返回内容可以通过error_page、echo或是lua等等)

3.3 封阻UA

  • 碰到爬虫,取出UA,比如:

Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.3056.1748 Mobile Safari/537.36; Bytespider

  • nginx配置匹配格式:
1
2
3
if ($http_user_agent ~* Bytespider) {
return 403;
}

坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------