发现和拦截恶意爬虫

简介: 互联网爬虫的种类众多,本文主要介绍了nginx网站如何发现恶意爬虫和拦截恶意爬虫。 发现问题 某日,收到A服务器所有网站打开缓慢的反馈,首先登陆到A服务器,查看nginx、php和mysql都正常运行,通过top命令查看发现服务器CPU、内存、系统负载均正常,通过云监控进行查看发现外网网卡出流量和数据包发送量很大 通过命令sar –n DEV 1 4进行核实后确实是外网网卡网络存在问题。

互联网爬虫的种类众多,本文主要介绍了nginx网站如何发现恶意爬虫和拦截恶意爬虫。

发现问题

某日,收到A服务器所有网站打开缓慢的反馈,首先登陆到A服务器,查看nginx、php和mysql都正常运行,通过top命令查看发现服务器CPU、内存、系统负载均正常,通过云监控进行查看发现外网网卡出流量和数据包发送量很大

1

通过命令sar –n DEV 1 4进行核实后确实是外网网卡网络存在问题。
通过命令iftop -i eth1 –P对外网网卡流量情况进行分析排查发现http服务的tcp80端口占用了13+M/s的出流量。
接下来排查nginx站点日志发现XXXXX.com.log站点的日志存在日志量较大超过3G,打开日志发现大量的user-agent为Baiduspider 的访问,如下图
2

查看访问IP为不同的IP,通过命令nslookup ip进行查看发现不是百度官方的蜘蛛抓取,判断为恶意爬虫。

拦截恶意爬虫
正常爬虫通常会带有xxspider的user-agent标识,并且爬取的请求量不大,爬取URL和时间段都比较分散。合法的爬虫IP在做反向的nslookup或tracert时,一般都可以看到合法的来源地址。例如,下图显示了一条百度爬虫的记录。
1
而恶意爬虫可能会在某个时间段大量请求某个域名的特定地址/接口,这很可能是伪装成爬虫的CC攻击,或是经第三方伪装后,针对性爬取敏感信息的请求。当恶意爬虫请求量大到一定程度,往往可以造成服务器的CPU飙升,带来网站无法打开等业务中断问题。

在站点配置文件XXXXX.com.conf中加入以下代码阻止user-agent带有Baiduspider的访问,返回结果指定为403。
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") {
return 403;
}
此代码会屏蔽所有的爬虫,所以对搜索排名有要求的话建议不用使用此方法。重新载入XXXXX.com.conf后观察流量情况发现流量恢复正常。网站访问恢复正常。
2

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8月前
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
563 6
|
8月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1222 31
|
7月前
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
867 4
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
262 4
|
8月前
|
数据采集 XML 存储
Headers池技术在Python爬虫反反爬中的应用
Headers池技术在Python爬虫反反爬中的应用
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
474 66
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
573 4