У меня был фляга API. Кто бы ни использовал этот API, я должен ограничить их звонки, отслеживая их IP-адрес, используя flask и python - PullRequest
0 голосов
/ 02 июля 2019

У меня был API, кто бы ни подключался к этому API, я должен ограничить их звонки , отслеживая его IP-адрес . Если один пользователь подключается к моему API во второй раз, я должен уменьшить свои вызовы. Они могут поразить мои API с мобильного или системы, какой бы она ни была. Используя флешку и питон, пожалуйста, дайте мне любое предложение или учебное пособие. Спасибо заранее.

Я попробовал этот код, но я могу отслеживать только их общедоступный IP-адрес, я хочу, чтобы их локальный IP-адрес наряду с общедоступным IP-адресом.

@app.route('/api.text-services/sentiment', methods=['GET'])
@cross_origin()
def Demoapi():
     ipaddress=request.remote_addr

Result:106.XX.XX.XX(Public IP)

app.wsgi_app = ProxyFix(app.wsgi_app)
@app.route('/api.text-services/sentiment', methods=['GET'])
@cross_origin()
def Demoapi():

    ipaddress=request.environ.get('HTTP_X_REAL_IP', request.remote_addr)

Результат: 106.XX.XX.XX (публичный IP)

@app.route('/api.text-services/sentiment', methods=['GET'])
@cross_origin()
def Demoapi():
    ipaddress=origin=request.headers.get('X-Forwarded-For', request.remote_addr)

Результат: 106.XX.XX.XX (публичный IP)

Я ожидаю, что результат будет 106.XX.XX.XX (общедоступный IP-адрес) _10.0.XX.XXX (локальный IP-адрес) с использованием flask и python. Из какой системы пользователь использует мой API, я должен иметь возможность отслеживать Публичный IP и локальный IP этой системы с использованием flask и python.

1 Ответ

0 голосов
/ 02 июля 2019

То, что вы пытаетесь достичь, называется ограничением скорости просмотра.Вы можете ограничить просмотр, используя различные методы.

  1. Один из тех, которые я предпочитаю, - это написание функции декоратора, которая будет использовать Redis в фоновом режиме, чтобы сохранить количество вызовов для каждого клиента.Проверьте этот фрагмент / учебник от сообщества Flask.

  2. Второй вариант использует расширение Flask-Limitter , которое в основном реализует первый параметр какрасширение и облегчает жизнь.

  3. В качестве третьего варианта вы можете реализовать ограничение скорости на уровне инфраструктуры.Если вы собираетесь использовать Microsoft Azure или AWS для размещения своего приложения, они предоставляют службы, называемые Azure API Management и AWS API Gateway, которые поставляются с функцией ограничения скорости.

КонечноЕсть, вероятно, другие способы установить лимит вызовов на ваших маршрутах Flask, но это наиболее распространенные методы, с которыми я сталкивался до сих пор.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...