Nginx如何禁止空UA和特定User Agent垃圾爬虫访问设置教程

频道:服务器运维 日期:

宝塔面板搭建的网站查看网站日志时:我们会经常发现一些空UA采集,或者垃圾爬虫高频的访问,导致CPU消耗过高,其实通过User Agent的特征,我们可以禁止那些恶意的无效的访问,Nginx环境如何禁止特定爬行工具、空UA、特定UA访问我们的网站:

禁止指定UA及UA为空的访问

if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
     return 403;
}

禁止非GET|HEAD|POST方式的抓取

if ($request_method !~ ^(GET|HEAD|POST)$) {
    return 403;
}

禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
     return 403;
}

宝塔面板的Nginx环境,登录宝塔面板后台 - 网站 -网站设置 - 配置文件 里面,添加你需要的代码:

如何测试效果

Linux的vps,比如Centos7 使用Xshell软件连接上VPS。
使用使用下面的命令测试一下就行:

模拟UA为空的抓取:

curl -I -A '' https://www.pigji.com

模拟垃圾爬虫AhrefsBot抓取:

curl -I -A 'AhrefsBot' https://www.pigji.com

模拟AhrefsBot访问返回:HTTP/1.1 403 Forbidden 则设置生效访问被拦截!

模拟百度蜘蛛的抓取:

curl -I -A 'Baiduspider' https://www.pigji.com

模拟百度蜘蛛访问则成功返回:HTTP/1.1 200 OK
表示百度的爬虫是正常可以访问你的网站。

附一部分垃圾垃圾爬虫和扫描

FeedDemon 内容采集
BOT/0.1 sql注入
CrawlDaddy sql注入
Java 内容采集
Jullo 内容采集
Feedly 内容采集
UniversalFeedParser 内容采集
ApacheBench cc攻击器
Swiftbot 无用爬虫
YandexBot 无用爬虫
AhrefsBot 无用爬虫
YisouSpider 无用爬虫
jikeSpider 无用爬虫
MJ12bot 无用爬虫
ZmEu phpmyadmin 漏洞扫描
WinHttp 采集cc攻击
EasouSpider 无用爬虫
HttpClient tcp攻击
Microsoft URL Control 扫描
YYSpider 无用爬虫
jaunty wordpress爆破扫描器
oBot 无用爬虫
Python-urllib 内容采集
Indy Library 扫描
FlightDeckReports Bot 无用爬虫
Linguee Bot 无用爬虫

就这样吧,宝塔面板nginx环境下,如何禁止空UA,UA为空的访问,禁止特定User Agent的垃圾爬虫访问和采集IP访问网站设置教程。