私は人を知らない、私はアプリでこれを行うにはかなり良い方法を考え出した。とにかく1つのアプリで悪い行為を処罰したいだけです。私がやってしまったことだった。
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
私はので、私はDBは毎回ヒットやっていないよ、これを引き締めることができると確信していますが、それはかなりうまく機能しているように見えます。昨夜、GoogleBotを捕まえました。さらに、既知のプロキシを介して多数の人が入ってくる場合に、IPアドレスをホワイトリストに登録する機会があります。
+1ユーザーをブロックするためにアプリケーションの変更ではなく、ネットワーク設定または少なくともウェブサーバーの設定(nginx/apache)を使用してください。私はWebサーバーの設定は、完全なブロックのようなものを許可するだろうと思うので、ネットワークの設定を行ってください。 – Jeremy