netaddr ipaddress cambiar address python ip

ipaddress - ¿Cómo puedo obtener la IP pública usando python2.7?



netmask python (6)

¿Cómo puedo obtener la IP pública usando python2.7? No es una IP privada.


Actualmente hay varias opciones:

  • ip.42.pl
  • jsonip.com
  • httpbin.org
  • ipify.org

A continuación se detallan las formas exactas en que puede utilizar cada una de las anteriores.

ip.42.pl

from urllib2 import urlopen my_ip = urlopen(''http://ip.42.pl/raw'').read()

Esta es la primera opción que he encontrado. Es muy conveniente para las secuencias de comandos, no necesita el análisis JSON aquí.

jsonip.com

from json import load from urllib2 import urlopen my_ip = load(urlopen(''http://jsonip.com''))[''ip'']

Al parecer, el único propósito de este dominio es devolver la dirección IP en JSON.

httpbin.org

from json import load from urllib2 import urlopen my_ip = load(urlopen(''http://httpbin.org/ip''))[''origin'']

httpbin.org es un servicio que a menudo recomiendo a los desarrolladores junior que utilicen para probar sus scripts / aplicaciones.

ipify.org

from json import load from urllib2 import urlopen my_ip = load(urlopen(''https://api.ipify.org/?format=json''))[''ip'']

El poder de este servicio es el resultado de la falta de límites (no hay límite de tarifas), la infraestructura (ubicada en Heroku, con alta disponibilidad en mente) y la flexibilidad (funciona tanto para IPv4 como para IPv6).

EDITAR : se agregó httpbin.org a la lista de opciones disponibles.

EDITAR : se agregó ipify.org gracias a la nota de kert .


Esta es una forma de no tener que hacer una llamada a internet:

Por favor, avíseme si esto no funciona, entonces puedo actualizar la respuesta (funciona para ~ 10 servidores míos)

from subprocess import check_output out = check_output("/sbin/ifconfig | awk ''/inet / { print $2 }'' | sed ''s/addr://''", shell=True) [x for x in out.decode().split() if not x == "127.0.0.1" and not (x.startswith("172") and x.endswith("0.1"))] ["x.x.x.x.x"]


Me gusta el paquete de solicitudes con http://ip.42.pl/raw

import requests requests.get(''http://ip.42.pl/raw'').text


Prueba esto:

import ipgetter import requests IP = ipgetter.myip() url = ''http://freegeoip.net/json/''+IP r = requests.get(url) js = r.json() print ''IP Adress: '' + js[''ip''] print ''Country Code: '' + js[''country_code''] print ''Country Name: '' + js[''country_name''] print ''Region Code: '' + js[''region_code''] print ''Region Name: '' + js[''region_name''] print ''City Name: '' + js[''city''] print ''Zip code: '' + js[''zip_code''] print ''Time Zone: '' + js[''time_zone''] print ''Latitude: '' + str(js[''latitude'']) print ''Longitude: '' + str(js[''longitude''])


Puedes hacer esto:

import requests print requests.get("http://ipecho.net/plain?").text

Produce:

XX.XX.XXX.XXX


Getip es un pequeño módulo que devuelve una dirección IP pública de un servidor aleatorio.

Instalar:

~ $ pip install getip2

Utilizar:

>> import getip >> ip = getip.get() >> >> ip ''66.249.76.109''