Holen Sie sich IP-Adressen der Besucher mit Kolben für Python
Mache ich eine website, wo Benutzer sich anmelden können und Dateien herunterladen, mit der Flask micro-framework (basierend auf Werkzeug), die verwendet Python (2.6 in meinem Fall).
Ich brauche, um die IP-Adresse der Benutzer beim anmelden (für logging-Zwecke).
Weiß jemand, wie dies zu tun? Sicherlich gibt es einen Weg, es zu tun mit Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie in der Dokumentation auf wie der Zugriff auf das Request-Objekt und dann Holen die aus dem gleichen Request-Objekt, das Attribut
remote_addr
.Code-Beispiel
Weitere Informationen finden Sie in der Werkzeug Dokumentation.
HTTP_X_FORWARDED_FOR
so stellen Sie sicher, dass Sie am Ende nicht mit localhost für jede Anforderung.Proxys machen kann dies ein wenig schwierig, stellen Sie sicher, dass Sie ProxyFix ( Kolben docs ), wenn Sie eines verwenden. Werfen Sie einen Blick auf
request.environ
in Ihrer speziellen Umgebung. Mit nginx habe ich manchmal etwas wie das hier tun:Proxies, wie z.B. nginx, vorwärts-Adressen, die Sie in der Regel auch die Originale IP irgendwo in den Kopfzeilen der Anfrage.
Update Sehen die Kolben-Implementierung von Sicherheit. Wieder, überprüfen Sie die Dokumentation über ProxyFix vor der Umsetzung. Ihre Lösung kann variieren, abhängig von Ihrer speziellen Umgebung.
Eigentlich, was Sie finden werden, ist, dass, wenn Sie einfach immer folgende erhalten Sie die Adresse des Servers:
Wenn Sie möchten, dass die clients IP-Adresse haben, dann verwenden Sie die folgenden:
request.remote_addr
klingt wie eine Eigenschaft, die Sie sollten ein remote-Adresse, je nachdem, ob der reverse-proxy vertrauenswürdig ist.Die IP-Adresse des Benutzers abgerufen werden können mit dem folgenden snippet:
httpbin.org verwendet diese Methode:
127.0.0.1
durch proxy, nicht sehr hilfreich.Habe ich Nginx und Mit unten Nginx Config:
@tirtha-r Lösung für mich gearbeitet
Meine Anfrage und Antwort:
Den code unten gibt immer die öffentliche IP des client (und nicht eine private IP-Adresse hinter einem proxy).
Dieser sollte den job tun.
Es bietet die client-IP-Adresse (remote-host).
Beachten Sie, dass dieser code ausgeführt wird, auf der server-Seite.