Je crée un site Web où les utilisateurs peuvent se connecter et télécharger des fichiers, en utilisant le micro-framework Flask (basé sur Werkzeug ) qui utilise Python (2.6 dans mon cas).
J'ai besoin d'obtenir l'adresse IP des utilisateurs lorsqu'ils se connectent (à des fins de journalisation). Est-ce que quelqu'un sait comment faire ça? Il y a sûrement un moyen de le faire avec Python?
python
flask
ip-address
werkzeug
Jon Cox
la source
la source
HTTP_X_FORWARDED_FOR
alors assurez-vous de ne pas vous retrouver avec localhost pour chaque demande.Les proxys peuvent rendre cela un peu délicat, assurez-vous de vérifier ProxyFix ( Flask docs ) si vous en utilisez un. Jetez un œil à
request.environ
votre environnement particulier. Avec nginx, je fais parfois quelque chose comme ça:Lorsque des proxys, tels que nginx, des adresses de transfert, ils incluent généralement l'IP d'origine quelque part dans les en-têtes de demande.
Mise à jour Voir l'implémentation flask-security . Encore une fois, consultez la documentation sur ProxyFix avant de l'implémenter. Votre solution peut varier en fonction de votre environnement particulier.
la source
En fait, ce que vous trouverez, c'est que lorsque vous obtenez simplement ce qui suit, vous obtiendrez l'adresse du serveur:
Si vous souhaitez l'adresse IP du client, utilisez les éléments suivants:
la source
request.remote_addr
sonne comme une propriété qui devrait obtenir une adresse distante selon que le proxy inverse est approuvé ou non.L'adresse IP de l'utilisateur peut être récupérée à l'aide de l'extrait de code suivant:
la source
J'ai Nginx et avec ci-dessous Nginx Config :
La solution @ tirtha-r a fonctionné pour moi
Ma demande et réponse:
la source
Le code ci-dessous donne toujours l'adresse IP publique du client (et non une adresse IP privée derrière un proxy).
la source
httpbin.org utilise cette méthode:
la source
127.0.0.1
raison d'un proxy, pas très utiles.Si vous utilisez Nginx derrière un autre équilibreur, par exemple AWS Application Balancer, HTTP_X_FORWARDED_FOR renvoie la liste des adresses. Il peut être corrigé comme ça:
la source
Si vous utilisez l'environnement Gunicorn et Nginx, le modèle de code suivant fonctionne pour vous.
la source
Cela devrait faire l'affaire. Il fournit l'adresse IP du client (hôte distant).
Notez que ce code s'exécute côté serveur.
la source