101天前2019-07-09 17:44:28 |    抢沙发  179 
最近一段时间发现网站访问量突曾,把服务器都榨干了,于是看了下日志,发现很多机器人来采集内容,我相信很多站长都遇到过这样的问题。但是这个没办法100%的防止采集,我们能做的就是增加采集成本,此文章主要介绍一种简单初级的通过nginx配置来禁止一部分采集爬虫活动的进行。

爬虫

此方法的主要思路是通过对请求客户端的http_user_agent进行过滤

在nginx的虚拟主机配置文件的server端中添加下列代码:

#禁止爬虫工具指定UA和不相关搜索引擎的抓取                                                                                                                                                      
if ($http_user_agent ~* (Scrapy|Curl|HttpClient|python|phantomjs|EtaoSpider|HuihuiSpider|WochachaSpider|GwdangSpider|YYSpider|MJ12bot|SemrushBot|WinHttp|WebZIP|FetchURL|node-superagent|java|FeedDemon|Jullo|JikeSpider|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|DigExt|heritrix|EasouSpider|Ezooms|YandexBot|FlightDeckReports|^$)) {                                                                                                                                                     
  return 404 '打到一只蜘蛛精!';                                                                                                                                    
}                                                                                                                                                                                              
                                                                                                                                                                                               
#禁止指定UA及UA为空的访问                                                                                                                                                                      
if ($http_user_agent ~ "Indy Library|Alexa Toolbar|Microsoft URL Control|lightDeckReports Bot|BOT/0.1|Linguee Bot|^$" ) {                                                                      
  return 404 '打到一只蜘蛛精!';                                                                                                                                    
}                                                                                                                                                                                              
                                                                                                                                                                                               
#禁止非GET|HEAD|POST方式的抓取                                                                                                                                                                 
if ($request_method !~ ^(GET|HEAD|POST)$) {                                                                                                                                                    
  return 404 '打到一只蜘蛛精!';                                                                                                                                    
}
本文也参考了网络上其他人写的方法进行了一个整合,你也可以做成一个单的配置文件然后用 include引入。

好了文章就先写到这儿了。

发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享