开头先声明一下,我只是个菜鸡前端,服务器环境是用宝塔搭建的,后台是 php 写的,公司规模超级小没有专业运维
最近发现公司的一台服务器访问量暴增了几个数量级。那台服务器上放的是公司的官网,上面发布的内容都是些增加 SEO 的没有任何营养的东西,按理说不该有这么大的流量。
查了下日志,所有请求都在访问同一个页面,而且全部来自 8.160.0.0/16 这个属于阿里巴巴的 IP 段。推测可能是某家公司部署的爬虫在抓取训练语料之类的。它的请求 UA 也不是搜索引擎的蜘蛛,而是伪装成普通浏览器: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 。
目前这个页面已经被爬取了超过两千万次。检查后发现,问题出在插入关键词的代码上,生成的超链接结构类似:
关键词。<a href=">关键词</a>关<a href=">关键词</a>。
dom 解析后,会把 href 里的内容拼接到当前 URL 后面访问。而偏偏这个官网使用的模板引擎会忽略 URL 中无效的路径,导致访问这个错误链接时依然会返回同一个页面,于是形成了无限递归访问。
现在光是这个页面每天产生的日志就接近 30GB 。我现在已经拦截了所有来自这个 IP 段的访问,但是看防火墙还是有每秒几百次的请求,不知道这家公司什么时候才会发现