识别与限流恶意机器人的关键考量因素、实践方案及风险咨询
识别与限流恶意机器人的关键考量因素、实践方案及风险咨询
嗨,纠结了半天不知道该去ServerFault还是Webmasters提问,索性来这里请教大家了!
最近恶意机器人搞得我头大——识别和封禁它们占了我大部分工作时间,所以我打算给网站做访问限流,但又怕操作太极端出问题,想跟大家聊聊相关的最佳实践、潜在风险,还有其他需要注意的细节。
我的现状与初步思路
目前我遇到的情况是:大量机器人通过VPN/代理访问网站,单个IP在1-2小时内就能发起10k-15k请求,等我发现并封禁时已经造成影响了;每天大概能碰到100-200个这类机器人,不仅拖慢网站速度,还疑似在爬取内容(具体目的不太确定)。
我自己琢磨的初步方案是:
- 限流规则:针对非图片类的内容页面,统计同一IP在24小时内的请求次数,一旦超过100次,就弹出验证码并返回限流对应的状态码
- 合规爬虫白名单:通过反向IP验证来识别正规爬虫——90%的知名爬虫(比如Google、Yandex、Bing)会使用规范的主机名(例如
crawl-[foo].googlebot.com),只有当主机名反向解析后匹配原IP时,才加入白名单放行 - 避开无效/危险操作:
- 不靠User Agent封禁,基本没用
- 不白名单
.google.com域名,因为像google-proxy-[foo].google.com这类主机可能被滥用用来绕过限制,而且这类IP还关联Gmail等正常服务(比如用户发邮件带我站图片时,Gmail可能用这些IP访问),不能乱封 - 不封禁数据中心类IP,一来很难精准区分,二来不少正常用户也会用这类IP的VPN
想请教大家的几个核心问题
- 识别和封禁恶意机器人,还有哪些靠谱的最佳实践、技巧?
- 限流这类操作可能会出现哪些问题?毕竟这类操作很容易踩坑
- 还有哪些类似的细节需要我提前考虑?我特别怕误封正常用户,或者影响搜索引擎排名
补充:Cloudflare效果不佳的原因
我之前试过用Cloudflare,但感觉帮助不大:
- 它们可能直接把缓存内容发给爬虫,导致我看不到这些请求,也没法拦截
- 很多我能察觉到的可疑请求,Cloudflare根本没拦住
- 经常给我的正常IP弹验证码——我完全没做任何自动化/可疑操作,感觉他们的IP信誉和用户行为识别做得并不精准
备注:内容来源于stack exchange,提问作者adrianTNT
相关产品推荐
相关产品推荐

