Задать вопрос
@guit24

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

подскажите, пожалуйста, как с помощью middleware, сделать так, чтобы возвращалась ошибка, если за последние n секунд было больше k запросов c одного ip адреса. ?
  • Вопрос задан
  • 948 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Решения вопроса 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, <нужное количество секунд>)

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

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

Похожие вопросы