Buenas,
Hoy vamos a comprobar como podemos obtener la IP externa de nuestro ordenador en un script de Python
Una de las maneras más sencillas es utilizar cualquier página que te de la IP externa, y scrapearla usando urllib2 (Python 2.7) y urllib (Python 3.0+).
PYTHON 2.7
def get_external_IP():
''' Get external IP using some websites '''
import urllib2
import re
import random
counter = 0
response_ip = []
# Lista de páginas que nos devuelven nuestra IP externa
ip_websites = ['http://www.canyouseeme.org/', 'http://checkip.dyndns.org/', ]
# Tratamos de sacar la IP 10 veces
while not response_ip and counter < 10:
# Leer una página elegida con random de la lista de páginas
site = urllib2.urlopen(random.choice(ip_websites)).read()
# Usar regex para sacar la IP del HTML de la página
regex_ip = '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})'
response_ip = re.findall(regex_ip, site)
counter += 1
if counter == 10: # Si el contador vale 10 aquí significa que no encontró la IP
print "No se puede obtener la IP externa de las páginas, Estás conectado a Internet ?"
sys.exit(2)
address = response_ip[0]
return address
Esta función nos devolvería la IP externa de nuestro ordenador. Esta es una manera sencilla de obtener la IP externa sin demasiada complicaciones.
PYTHON 3.0+
def get_external_IP():
''' Get external IP using some websites '''
import urllib.request
import re
import random
counter = 0
response_ip = []
# Lista de páginas que nos devuelven nuestra IP externa
ip_websites = ['http://www.canyouseeme.org/', 'http://checkip.dyndns.org/', ]
# Tratamos de sacar la IP 10 veces
while not response_ip and counter < 10:
# Leer una página elegida con random de la lista de páginas
site = urllib.request.urlopen(random.choice(ip_websites)).read()
# Usar regex para sacar la IP del HTML de la página
regex_ip = '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})'
response_ip = re.findall(regex_ip, site)
counter += 1
if counter == 10: # Si el contador vale 10 aquí significa que no encontró la IP
print "No se puede obtener la IP externa de las páginas, Estás conectado a Internet ?"
sys.exit(2)
address = response_ip[0]
return address
Esta función nos devolvería la IP externa de nuestro ordenador. Esta es una manera sencilla de obtener la IP externa sin demasiada complicaciones.
Cualquier duda no dudeis en comentar !