我配置了一个运行 Apache 的服务器,几天前我在日志中注意到有机器人在对网站进行无休止的查询。日志显示这些机器人每秒运行大约 60 个查询,持续大约 20 分钟,这些查询来自同一个 IP 地址。我该如何限制查询,处理此类机器人的适当方法是什么?
提前致谢。
答案1
考虑安装一个速率限制软件,它不仅可以帮助您防御合法机器人。您可以使用mod_evasive
Apache,也可以安装 Nginx 作为前端并使用其HttpLimitZoneModule
内置的。
答案2
我强烈推荐这个工具失败2ban(http://www.fail2ban.org/);我们在自己的服务器上使用它,它对于限制 Apache 以外的 DoS 洪水攻击非常有用。
fail2ban 会主动监控各种日志以了解不同的模式(我们将其设置为仅监控 Apache 命中情况),如果它确定某个特定 IP 在一定时间内的命中次数过多,则会禁止该 IP 运行一段时间(我们使用 20 分钟的禁止窗口)
fail2ban 为大多数发行版预先构建了软件包,或者您可以获取源代码;由于是 Python,您甚至不需要编译它!:D
答案3
一个简单的解决方案是编辑 robots.txt 文件并添加以下行:
用户代理:*
抓取延迟:60
将抓取延迟更改为请求之间的秒数。“好”机器人应该听从这个,并在请求之间等待。然而,“坏”机器人不会听从任何 robots.txt 规则。
答案4
robots.txt 并将机器人重定向到静态网站。通常,让机器人(搜索引擎)抓取(索引)您的网站是一件好事。不过,建议的方法可以帮助您控制它们如何索引它。