X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/96c0b0e33be79cb00310022e17d7cd71cde75d6f..c55ebf5c95eff81339fdfe2e7912fa163c14f9d7:/utils/cron_ipanalyse.py?ds=sidebyside diff --git a/utils/cron_ipanalyse.py b/utils/cron_ipanalyse.py index 1ca2267f..35db7759 100755 --- a/utils/cron_ipanalyse.py +++ b/utils/cron_ipanalyse.py @@ -223,6 +223,7 @@ class BlockList: class IPstats: def __init__(self): + self.redirected = 0 self.short_total = 0 self.short_api = 0 self.long_total = 0 @@ -232,6 +233,8 @@ class IPstats: def add_long(self, logentry): self.long_total += 1 + if logentry.retcode == 301: + return if logentry.request is not None: self.long_api += 1 if not self.bad_ua: @@ -240,6 +243,9 @@ class IPstats: def add_short(self, logentry): self.short_total += 1 + if logentry.retcode == 301: + self.redirected += 1 + return if logentry.request is not None: self.short_api += 1 self.add_long(logentry) @@ -255,7 +261,9 @@ class IPstats: # deblock only if the IP has been really quiet # (properly catches the ones that simply ignore the HTTP error) return None if self.long_total < 20 else 'block' - if self.long_api > BLOCK_UPPER or self.short_api > BLOCK_UPPER / 3: + if self.long_api > BLOCK_UPPER \ + or self.short_api > BLOCK_UPPER / 3 \ + or (self.redirected > 100 and self.short_total == self.redirected): # client totally overdoing it return 'block' if was_bulked: