@guit24

Как в вjango посредством middleware реализовать проверку на количество запросов за определенное количество времени?

подскажите, пожалуйста, как с помощью middleware, сделать так, чтобы возвращалась ошибка, если за последние n секунд было больше k запросов c одного ip адреса. ?
  • Вопрос задан
  • 905 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Да как - создаете middleware. В нем берете из заголовка запроса ip-адрес (для этого предварительно настраиваете ваш веб-сервер чтобы он добавлял нужный заголовок).
Далее выполняете примерно такой код:

count = cache.get_or_set(f'ip:{ip_address}', 0, <нужное количество секунд>) 
count += 1
if count > <допустимое количество попыток>:
     raise Exception('Давай, - до свидания')
else:
     cache.set(f'ip:{ip_address}', count, <нужное количество секунд>)

Ну а правильнее всего - реализовать эту логику на стороне веб-сервера. Он такое, как правило - умеет сам делать. И не нагружать дополнительной нагрузкой вашу миддлварь...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы