Я не знаю, ребята, я нашел довольно хороший способ сделать это в приложении.В любом случае, я просто хочу наказать за плохое поведение в одном приложении.То, что я закончил, было:
def log_ip
# Initialize
if IPLOG.include?(request.ip)
IPLOG[request.ip][:count]+=1
else
IPLOG[request.ip] = {:time => Time.now, :count => 1}
end
# Reset the time if necessary
IPLOG[request.ip][:time] = Time.now if IPLOG[request.ip][:time] < 1.minute.ago
if IPLOG[request.ip][:count] > REQUESTS_PER_MINUTE_UNTIL_BLACKLIST
Blacklist.create(:ip_address => request.ip, :count => IPLOG[request.ip][:count])
end
if Blacklist.where(:ip_address => request.ip).first
IPLOG.delete(request.ip)
redirect_to blocked_path
end
end
Я уверен, что смогу усилить это, чтобы я не делал удар по дб каждый раз, но, похоже, он работает довольно хорошоЭто поймал GoogleBot прошлой ночью.Кроме того, существует возможность внесения в белый список IP-адресов в случае, если группа людей входит через известный прокси.