Tworzę stronę internetową, na której użytkownicy mogą się logować i pobierać pliki, korzystając z mikramy frameworku Flask (opartej na Werkzeug ), która używa Pythona (w moim przypadku 2.6).
Muszę uzyskać adres IP użytkowników podczas logowania (do celów logowania). Czy ktoś wie jak to zrobić? Z pewnością jest na to sposób za pomocą Pythona?
python
flask
ip-address
werkzeug
Jon Cox
źródło
źródło
HTTP_X_FORWARDED_FOR
więc upewnij się, że nie skończysz z localhost dla każdego żądania.Proxy mogą sprawić, że będzie to trochę trudne, koniecznie sprawdź ProxyFix ( dokumenty Flask ), jeśli go używasz. Spójrz
request.environ
w swoim konkretnym środowisku. Z nginx czasami robię coś takiego:Gdy serwery proxy, takie jak nginx, przekazują adresy, zwykle zawierają oryginalne IP gdzieś w nagłówkach żądania.
Aktualizacja Zobacz implementację bezpieczeństwa flask . Ponownie przejrzyj dokumentację dotyczącą ProxyFix przed wdrożeniem. Twoje rozwiązanie może się różnić w zależności od konkretnego środowiska.
źródło
W rzeczywistości znajdziesz to, że po otrzymaniu następujących informacji otrzymasz adres serwera:
Jeśli chcesz adres IP klienta, użyj następujących opcji:
źródło
request.remote_addr
brzmi jak właściwość, która powinna otrzymać zdalny adres w zależności od tego, czy zaufane jest odwrotne proxy.Adres IP użytkownika można odzyskać za pomocą następującego fragmentu:
źródło
Mam Nginx i Z poniżej Nginx Config :
Rozwiązanie @ tirtha-r zadziałało dla mnie
Moja prośba i odpowiedź:
źródło
Poniższy kod zawsze podaje publiczny adres IP klienta (a nie prywatny adres IP za serwerem proxy).
źródło
httpbin.org używa tej metody:
źródło
127.0.0.1
powodu proxy, niezbyt pomocne.Jeśli używasz Nginx za innym modułem równoważącym, na przykład AWS Application Balancer, HTTP_X_FORWARDED_FOR zwraca listę adresów. Można to naprawić w ten sposób:
źródło
Jeśli korzystasz ze środowiska Gunicorn i Nginx, wówczas działa następujący szablon kodu.
źródło
To powinno wystarczyć. Podaje adres IP klienta (host zdalny).
Zauważ, że ten kod działa po stronie serwera.
źródło