programming - real python socket
¿Cómo obtengo la IP externa de un socket en Python? (6)
Esto no es posible sin la cooperación de un servidor externo, ya que podría haber cualquier número de NAT entre usted y la otra computadora. Si se trata de un protocolo personalizado, puede pedirle al otro sistema que informe a qué dirección está conectado.
Cuando llamo socket.getsockname()
en un objeto socket, devuelve una tupla de la IP interna de la máquina y el puerto. Sin embargo, me gustaría recuperar mi IP externa. ¿Cuál es la forma más económica y eficiente de hacer esto?
La única forma en que puedo pensar que está garantizado es dándote un servicio como http://whatismyip.com/ para obtenerlo.
toma de importación
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
s.connect (("msn.com", 80))
s.getsockname ()
Usando la dirección sugerida en la fuente de http://whatismyip.com
import urllib
def get_my_ip_address():
whatismyip = ''http://www.whatismyip.com/automation/n09230945.asp''
return urllib.urlopen(whatismyip).readlines()[0]
https://github.com/bobeirasa/mini-scripts/blob/master/externalip.py
''''''
Finds your external IP address
''''''
import urllib
import re
def get_ip():
group = re.compile(u''(?P<ip>/d+/./d+/./d+/./d+)'').search(urllib.URLopener().open(''http://jsonip.com/'').read()).groupdict()
return group[''ip'']
if __name__ == ''__main__'':
print get_ip()
print (urllib.urlopen(''http://automation.whatismyip.com/n09230945.asp'').read())