Como obtener IP externa usando Python



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 !

Dejar un comentario

Tienes que esperar para comentar otra vez. Tiempo de espera: