¿Encontrar una dirección IP pública frente a Python?

¿Cómo puedo encontrar la IP pública para mi trabajo de red en Python?

Esto traerá su dirección IP remota

import urllib ip = urllib.urlopen('http://automation.whatismyip.com/n09230945.asp').read() 

Si no quieres confiar en otra persona, simplemente carga algo como este script PHP:

  

y cambia la URL en Python o si prefieres ASP:

 <% Dim UserIPAddress UserIPAddress = Request.ServerVariables("REMOTE_ADDR") %> 

Nota: no sé ASP, pero pensé que sería útil tener aquí, así que busqué en Google.

whatismyip.org es mejor … solo devuelve la ip como texto sin ningún tipo de basura extraña.

 import urllib ip = urllib.urlopen('http://whatismyip.org').read() 

Pero sí, es imposible hacerlo fácilmente sin confiar en algo fuera de la propia red.

Si no te importan los insultos, prueba:

http://wtfismyip.com/json

Enlazar en las cosas de urllib habituales como han demostrado otros.

También hay:

http://www.networksecuritytoolkit.org/nst/tools/ip.php

https://api.ipify.org/?format=json es bastante sencillo

se puede analizar simplemente ejecutando requests.get("https://api.ipify.org/?format=json").json()['ip']

 import urllib2 text = urllib2.urlopen('http://www.whatismyip.org').read() urlRE=re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',text) urlRE ['146.148.123.123'] 

Intente poner en una lista cualquier ‘findmyipsite’ que pueda encontrar e iterar a través de ellos para compararlos. Este parece funcionar bien.

Todas las respuestas que veo arriba informarán la dirección IP de cualquier proxy web en uso, no necesariamente la dirección IP pública de su sistema (cualquier cosa que no se ejecute a través de un proxy web puede tener una dirección IP completamente diferente).

 import requests r = requests.get(r'http://jsonip.com') # r = requests.get(r'https://ifconfig.co/json') ip= r.json()['ip'] print('Your IP is {}'.format(ip)) 

Referencia

Esto es simple como

 >>> import urllib >>> urllib.urlopen('http://icanhazip.com/').read().strip('\n') 'xx.xx.xx.xx'