马春杰杰博客
致力于深度学习经验分享!

吐槽:记录一次站点被Meta爬虫刷掉400G流量的排查过程

最新目录

最近几天频繁收到云服务商的流量报警。一开始以为是服务器被爆破或者遭遇了恶意 CC 攻击,登进服务器排查了一圈,发现事情并没有那么复杂,甚至有点无语。

简单记录一下排查过程。

1. 定位异常进程

连上 SSH 后,首先用 nethogs 看了下网卡的实时流量,发现有一个 unknown TCP 的接收流量异常高,大概占了 2MB/s

因为服务器上用 1Panel 跑了不少 Docker 容器,这种显示往往意味着是某个容器在大量消耗网络资源。接着直接用 docker stats 挨个查看容器状态。

果然揪出了真凶:跑 WordPressphp7 容器,网络 I/O 的接收量直接飙到了 400G,而其他容器只有几十 MB

2. 分析访问日志

定位到容器后,去看了眼对应网站 Nginxaccess.log。发现满屏都是来自 57.141.14.xxx 这个爱尔兰 IP 段的高并发请求。

看了一下请求头里的 User-Agent

搞半天不是黑客,而是 Facebook (Meta) 官方的网络爬虫。

3. 原因排查:经典的“蜘蛛陷阱”

按理说正规大厂的爬虫会有抓取频率限制,不至于把流量刷到这份上。仔细分析了日志里请求的 URL,发现全都是类似这样的链接:

熟悉 WordPress 的朋友应该知道,这是 WP 评论回复自带的动态链接。因为它的参数可以无限组合,在站长圈里属于经典的“蜘蛛陷阱”。普通的搜索引擎(像 Google百度)遇到这种特征通常会自动跳过,但 Meta 这个爬虫显然没有做这种优化,顺着链接一路往下爬,陷入了死循环。

最致命的是,这种带参数的动态请求是不走静态缓存的。它每请求一次,PHP 就要被迫去查询 MySQL 并重新渲染一次网页。并发一高,不仅耗费 CPU,渲染出的大量 HTML 页面也把带宽彻底吃光了。

4. 解决方案

既然查明了原因,处理起来就很简单了,直接在 1PanelWAF 规则里做拦截:

规则生效后,这些非正常的请求在 Nginx 层面就被直接丢弃了,只会返回一个只有几百字节的 403 页面,不再穿透到后端的 PHP 和数据库。

观察了一会儿流量监控,曲线终于平稳了。

小结

现在各大科技公司都在疯狂抓取数据训练 AI,市面上各种无脑爬虫只会越来越多。各位维护个人博客或站点的朋友,如果遇到莫名其妙的流量飙升或 CPU 满载,不妨先看看 access 日志,说不定就是哪个大厂的爬虫在疯狂薅你的服务器资源。

PS:好你个扎克伯格,背地里净干这种事,我看你也不像好人!

赞(1) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《吐槽:记录一次站点被Meta爬虫刷掉400G流量的排查过程》
文章链接:https://www.machunjie.com/web/2120.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

:smile: :sad: :arrow: :cool: :confused: :cry: :eek: :evil: :exclaim: :idea: :lol: :mad: :mrgreen: :neutral: :question: :razz: :redface: :rolleyes: :surprised: :wink: :biggrin: :twisted: