利用Nginx设置防爬虫策略及代理访问

我们在平时Web应用系统开发中,为了网站的爬虫可以提升网站排名,比如百度蜘蛛。但有些爬虫对服务器恶意获取网站信息,不遵守robots规则,我们需要进行拦截。可以禁止某些User Agent抓取网站。本篇文章主要介绍一些基本的nginx 下的设置来提高系统可用性.

一. 新建配置配置文件

(例如进入到nginx安装目录下的conf目录,创建: agent_deny.conf)

#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
  return 403;
}
#禁止指定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|LinkpadBot|Ezooms|^$" )
{
  return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
  return 403;
}


#这三句if是禁止使用代理ip来访问,或禁止使用压力测试软件进行dos攻击
  
if ($http_user_agent ~* ApacheBench|WebBench|java/){
                return 403;
        }
if ($http_user_agent ~* (Wget|ab) ) {
   return 403;
}

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
            return 403;
}

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

include agent_deny.conf;

三. 重启nginx, 自行测试

通过上面简单的设置nginx通过判断User-Agent屏蔽蜘蛛访问网站就已经完成,可以根据实际情况对agent_deny.conf中的蜘蛛进行增加、删除或者修改,同时屏蔽了一些恶意使用代理访问系统的操作.

你可能感兴趣的:(Nginx,Nginx,User,Agent)