Wie kann ich die öffentliche IP mit python2.7 erhalten? Keine private IP.
Derzeit gibt es mehrere Möglichkeiten:
Im Folgenden finden Sie genaue Möglichkeiten, wie Sie die oben genannten Funktionen nutzen können.
from urllib2 import urlopen
my_ip = urlopen('http://ip.42.pl/raw').read()
Dies ist die erste Option, die ich gefunden habe. Es ist sehr praktisch für Skripte, Sie brauchen hier keine JSON-Analyse.
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('http://jsonip.com'))['ip']
Anscheinend besteht der einzige Zweck dieser Domäne darin, die IP-Adresse in JSON zurückzugeben.
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('http://httpbin.org/ip'))['Origin']
httpbin.org ist ein Service, den ich jungen Entwicklern häufig zum Testen ihrer Skripte/Anwendungen empfehle.
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']
Die Leistungsfähigkeit dieses Dienstes ergibt sich aus fehlenden Limits (es gibt keine Ratenbegrenzung), Infrastruktur (bei Heroku unter Berücksichtigung hoher Verfügbarkeit) und Flexibilität (funktioniert sowohl für IPv4 als auch für IPv6).
EDIT: httpbin.org wurde der Liste der verfügbaren Optionen hinzugefügt.
Das Anforderungspaket gefällt mir mit http://ip.42.pl/raw
import requests
requests.get('http://ip.42.pl/raw').text
Versuche dies:
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'])
Sie können dies einfach tun:
import requests
print requests.get("http://ipecho.net/plain?").text
Produziert:
XX.XX.XXX.XXX
Mit Anfragen Modul
import requests
public_IP = requests.get("https://www.wikipedia.org").headers["X-Client-IP"]
print public_IP
Dies ist ein Weg, um nicht ins Internet zu telefonieren:
Bitte lassen Sie mich wissen, wenn dies nicht funktioniert. Dann kann ich die Antwort aktualisieren (funktioniert für ~ 10 Server von mir).
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"]
Getip ist ein kleines Modul, das eine öffentliche IP-Adresse von einem zufälligen Server zurückgibt.
Installieren:
~ $ pip install getip2
Benutzen:
>> import getip
>> ip = getip.get()
>>
>> ip
'66.249.76.109'