Я создаю веб-сайт, где пользователи могут войти в систему и загружать файлы, используя микро-фреймворк Flask (на основе Werkzeug ), который использует Python (2.6 в моем случае).
Мне нужно получить IP-адрес пользователей при входе в систему (для целей регистрации). Кто-нибудь знает как это сделать? Конечно, есть способ сделать это с Python?
python
flask
ip-address
werkzeug
Джон Кокс
источник
источник
HTTP_X_FORWARDED_FOR
поэтому убедитесь, что вы не получите localhost для каждого запроса.Прокси-серверы могут сделать это немного сложным, не забудьте проверить ProxyFix ( Flask docs ), если вы его используете. Посмотрите на
request.environ
вашу конкретную среду. С nginx я иногда буду делать что-то вроде этого:Когда прокси, такие как nginx, перенаправляют адреса, они обычно включают исходный IP-адрес где-то в заголовках запроса.
Обновление Смотрите реализацию фляги безопасности . Опять же, ознакомьтесь с документацией о ProxyFix перед внедрением Ваше решение может отличаться в зависимости от конкретной среды.
источник
На самом деле, вы обнаружите, что при простом получении вы получите адрес сервера:
Если вам нужен IP-адрес клиента, используйте следующее:
источник
request.remote_addr
звучит как свойство, которое должно получить удаленный адрес в зависимости от того, является ли обратный прокси доверенным.IP-адрес пользователя можно получить с помощью следующего фрагмента:
источник
У меня есть Nginx и С ниже Nginx Config :
У меня сработало решение @ tirtha-r
Мой запрос и ответ:
источник
Приведенный ниже код всегда дает общедоступный IP-адрес клиента (а не частный IP-адрес за прокси-сервером).
источник
httpbin.org использует этот метод:
источник
127.0.0.1
из-за прокси, не очень полезно.Если вы используете Nginx за другим балансировщиком, например AWS Application Balancer, HTTP_X_FORWARDED_FOR возвращает список адресов. Это можно исправить так:
источник
Если вы используете среду Gunicorn и Nginx, тогда вам пригодится следующий шаблон кода.
источник
Это должно сделать работу. Он предоставляет IP-адрес клиента (удаленный хост).
Обратите внимание, что этот код выполняется на стороне сервера.
источник