Estoy creando un sitio web donde los usuarios pueden iniciar sesión y descargar archivos, utilizando el micro marco Flask (basado en Werkzeug ) que utiliza Python (2.6 en mi caso).
Necesito obtener la dirección IP de los usuarios cuando inician sesión (para fines de registro). ¿Alguien sabe como hacer esto? ¿Seguramente hay una manera de hacerlo con Python?
python
flask
ip-address
werkzeug
Jon Cox
fuente
fuente
HTTP_X_FORWARDED_FOR
así que asegúrese de no terminar con localhost para cada solicitud.Los proxies pueden hacer que esto sea un poco complicado, asegúrate de revisar ProxyFix ( Flask docs ) si estás usando uno. Eche un vistazo a
request.environ
su entorno particular. Con nginx a veces haré algo como esto:Cuando los servidores proxy, como nginx, reenvían direcciones, generalmente incluyen la IP original en algún lugar de los encabezados de solicitud.
Actualización Consulte la implementación de seguridad del matraz . Nuevamente, revise la documentación sobre ProxyFix antes de implementar. Su solución puede variar según su entorno particular.
fuente
En realidad, lo que encontrará es que al obtener lo siguiente obtendrá la dirección del servidor:
Si desea la dirección IP del cliente, use lo siguiente:
fuente
request.remote_addr
suena como una propiedad que debería obtener una dirección remota dependiendo de si el proxy inverso es confiable.La dirección IP del usuario se puede recuperar con el siguiente fragmento:
fuente
Tengo Nginx y con la siguiente configuración de Nginx :
La solución @ tirtha-r funcionó para mí
Mi solicitud y respuesta:
fuente
El siguiente código siempre proporciona la IP pública del cliente (y no una IP privada detrás de un proxy).
fuente
httpbin.org usa este método:
fuente
127.0.0.1
debido a proxy, no muy útil.Si usa Nginx detrás de otro equilibrador, por ejemplo AWS Application Balancer, HTTP_X_FORWARDED_FOR devuelve una lista de direcciones. Se puede arreglar así:
fuente
Si está utilizando el entorno Gunicorn y Nginx, la siguiente plantilla de código funciona para usted.
fuente
Esto debería hacer el trabajo. Proporciona la dirección IP del cliente (host remoto).
Tenga en cuenta que este código se ejecuta en el lado del servidor.
fuente