2026-11-01
Когда лимиты запросов по IP не остановили бота для поиска, распределённого по десяткам тысяч IP
На сайте, где поиск на каждый запрос обращается к внешнему API, поисковый трафик за несколько дней вырос примерно в 20 раз, и почти все поиски возвращали 503. Первое предположение, что лимит по IP всё сдержит, оказалось неверным. Примерно 60 000 поисков за один день пришли примерно с 60 000 разных IP, так что на каждый IP приходилось около одного запроса, и ни один IP не достиг ни одного лимита. User-Agent был обычным браузером, Referer указывал на сам сайт, а запросы были реальными названиями товаров, поэтому вероятной целью был сбор цен. Дневная квота внешнего API закончилась рано утром, и обычные посетители не могли искать большую часть дня. Исправления: обращаться к внешнему API только тогда, когда запрос несёт подписанный токен, выданный собственной страницей сайта, не учитывать поиски без токена в рейтинге популярных запросов и задать почасовые ограничения глобально и для каждого токена. После внедрения число 503 упало до нуля. Токен — это не аутентификация; он лишь повышает стоимость для атакующего.