form1.cn
Make a little progress every day

用nginx中的$http_user_agent简单配置防爬虫

18th of March 2020 Linux Nginx 294

有些爬虫对服务器恶意获取网站信息,不遵守robots规则,我们需要进行拦截。可以禁止某些User Agent抓取网站.

如果对方真想爬你,他可以编写程序模拟真实浏览器信息,下面只是防一些工具类的


在vhost中新建配置配置文件

agent_deny.ngxfix


#禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {

     return 403;

}

 

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

if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|

FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|

CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|

Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|

lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|

YandexBot|FlightDeckReports|Linguee Bot|^$" ) {

     return 403;             

}


在网站相关配置中的 server段插入如下代码

server {

    include "vhost/agent_deny.ngxfix";

    listen 443 ssl;

......

重启nginx

service nginx restart


使用curl -A 模拟抓取即可,比如:

curl -I -A 'YYSpider' www.wwww.com

curl -I -A' ' www.wwww.com

[root@iz conf]# curl -I -A 'YYSpider' www.wwww.com

HTTP/1.1 403 Forbidden

......


UA类型

FeedDemon             内容采集

BOT/0.1 (BOT for JCE) sql注入

CrawlDaddy            sql注入

Java                  内容采集

Jullo                 内容采集

Feedly                内容采集

UniversalFeedParser   内容采集

ApacheBench           cc攻击器

Swiftbot              无用爬虫

YandexBot             无用爬虫

AhrefsBot             无用爬虫

YisouSpider           无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)

jikeSpider            无用爬虫

MJ12bot               无用爬虫

ZmEu phpmyadmin       漏洞扫描

WinHttp               采集cc攻击

EasouSpider           无用爬虫

HttpClient            tcp攻击

Microsoft URL Control 扫描

YYSpider              无用爬虫

jaunty                wordpress爆破扫描器

oBot                  无用爬虫

Python-urllib         内容采集

Indy Library          扫描

FlightDeckReports Bot 无用爬虫

Linguee Bot           无用爬虫