问题

之前客户能够正常访问的一个网站这几天访问很慢,甚至有时候还拒绝访问。通过Nginx访问日志排查,发现有大量的请求指向同一个页面,而且访问的客户端IP地址在不断变化且没有太多规律,很难通过限制IP来拒绝访问。但请求的user-agent都带有Bytespider标记,这是一种流氓爬虫。访问日志如下图所示:

解决

解决思路:因为user-agent带有Bytespider爬虫标记,这可以通过Nginx规则来限定流氓爬虫的访问,直接返回403错误。

1、在/etc/nginx/conf.d目录下(因Nginx的安装区别,可能站点配置文件的路径有所不同)新建文件deny_agent.config配置文件:

#forbidden Scrapy
if ($http_user_agent ~* (Scrapy|Curl|HttpClient))
{
return ;
} #forbidden UA
if ($http_user_agent ~ "Bytespider|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 ;
} #forbidden not GET|HEAD|POST method access
if ($request_method !~ ^(GET|HEAD|POST)$)
{
return ;
}

2、在对应站点配置文件中包含deny_agent.config配置文件(注意是在server里面):

3、重启Nginx,建议通过nginx -s reload平滑重启的方式。重启之前请先使用nginx -t命令检测配置文件是否正确。

4、通过curl命令模拟访问,看配置是否生效(返回403 Forbidden,则表示配置OK):

附录: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 无用爬虫

最新文章

  1. 应用程序框架实战三十七:Util最新代码更新说明
  2. ps切图抠图详解-web前端(转)
  3. [讨论] 全新首发WIN7 32&64 WINSXS进一步精简批处理公测
  4. Allegro建立引脚封装概念名词梳理
  5. 如何查看IIS并发连接数【转】
  6. 20145305 《Java程序设计》第5周学习总结
  7. Android studio 读取properties文件
  8. mongoDB在windows下基于配置文件的安装和权限配置方式
  9. canvas实现“探照灯”共能
  10. 没有login页面
  11. SQL Server 优化存储过程的七种方法
  12. 使用olami sdk实现一个语音查询股票的iOS程序
  13. oracle数据库管理系统常见的错误(一)
  14. 三:Linux 的基本命令、
  15. 通过ajax和spring 后台传输json数据
  16. Jetson Nano Developer Kit
  17. 监控网络带宽 使用speedtest-cli命令
  18. 【模拟】[NOIP2014]螺旋矩阵[c++]
  19. macOS下通过docker在局域网成功访问mysql5.6数据库
  20. Azure SQL Database (26) 使用Query Store对Azure SQL Database监控

热门文章

  1. Net Core 3 Mvc AliPay Demo
  2. Recurrent neural network (RNN) - Pytorch版
  3. todo...git ssh http的区别
  4. 处理Oracle 监听文件listener.log
  5. windows密码凭据
  6. Python-08-内置函数
  7. .net mvc 迁移到 .netcore
  8. TextBox 显示横线
  9. 数据结构之链表(LinkedList)(一)
  10. 【转载】C#使用Split函数根据特定分隔符分割字符串