我已经configuration了一台运行Apache的服务器,几天前我在日志中注意到有一些僵尸程序正在运行无休止的查询。 这些日志显示,这些机器人每秒运行约60个查询,约20分钟来自相同的IP地址。 我怎样才能限制查询和处理这种机器人的适当方式?
提前致谢。
考虑安装一个限速软件,它将帮助你防御合法的机器人。 您可以使用Apache的mod_evasive ,也可以将Nginx作为前端安装,并使用其内置的HttpLimitZoneModule 。
我强烈build议使用工具fail2ban ( http://www.fail2ban.org/ ); 我们在自己的服务器上使用它,这对于限制DoS洪水不仅仅是Apache而言是非常有用的。
fail2ban主动监视不同模式的日志(我们有我们的设置只是监视Apache的命中),如果它确定从特定的IP在一定的时间内有太多的命中,它会禁止你的IP一段时间确定(我们使用了一个20分钟的禁止窗口)
fail2ban已经为大多数分发预编译了软件包,或者您可以获取源代码; 作为Python,你甚至不需要编译它! :d
一个简单的解决scheme是编辑你的robots.txt文件,并添加下面一行:
用户代理: *
爬行延迟:60
在请求之间以秒为单位将抓取延迟更改为一个数字。 “好”的机器人应该听取这个,并在请求之间等待。 “坏”机器人不听任何robots.txt规则。
robots.txt并将漫游器redirect到静态网站。 通常,让漫游器(search引擎)爬取(索引)您的网站是一件好事。 build议的方法可以帮助您控制如何索引它。