Python - IP-Adresse aus dem Hostnamen abrufen
Das Python-Socket-Modul kann verwendet werden, um die IP-Adresse von einem Hostnamen zu erhalten.
Das Socket-Modul ist Teil der Python-Kernbibliotheken, sodass wir es nicht separat installieren müssen.
Python Socket-Modul zum Abrufen der IP-Adresse von einem Hostnamen
Die Funktion gethostbyname() des Python-Socket-Moduls akzeptiert ein Hostnamen-Argument und gibt die IP-Adresse im String-Format zurück.
Hier ist ein einfaches Beispiel im Python-Interpreter, um die IP-Adresse einiger Webseiten herauszufinden.
python3.7
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import socket
>>> socket.gethostbyname('journaldev.com')
'45.79.77.230'
>>> socket.gethostbyname('google.com')
'172.217.166.110'
>>>
Hinweis: Wenn die Website hinter einem Lastenausgleich oder in der Cloud arbeitet, könnten Sie ein anderes Ergebnis bei der IP-Adresssuche erhalten.
Versuchen Sie beispielsweise, den oben genannten Befehl für google.com oder facebook.com auszuführen. Wenn Sie sich nicht an demselben Ort wie ich (Indien) befinden, besteht die Wahrscheinlichkeit, dass Sie eine andere IP-Adresse als Ausgabe erhalten.
Python-Skript zur Ermittlung der IP-Adresse einer Website
Lassen Sie uns ein Beispiel ansehen, bei dem wir den Benutzer auffordern, eine Webseitenadresse einzugeben und dann deren IP-Adresse auszugeben.
import socket
hostname = input("Please enter website address:\n")
IP lookup from hostname
print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')
Hier ist ein weiteres Beispiel, um den Hostnamen als Befehlszeilenargument an das Skript zu übergeben. Das Skript wird die IP-Adresse finden und ausgeben.
import socket
import sys
no error handling is done here, excuse me for that
hostname = sys.argv[1]
IP lookup from hostname
print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')
Ausgabe:
python3.7 ip_address.py facebook.com
The facebook.com IP Address is 157.240.23.35
Fehler-Szenarien mit socket.gethostbyname()
Wenn der Hostname nicht auf eine gültige IP-Adresse aufgelöst werden kann, wird socket.gaierror ausgelöst. Wir können diesen Fehler in unserem Programm mit einem try-except-Block abfangen.
Hier ist das aktualisierte Skript mit Ausnahmebehandlung für ungültige Hostnamen.
import socket
import sys
hostname = sys.argv[1]
IP lookup from hostname
try:
ip = socket.gethostbyname(hostname)
print(f'The {hostname} IP Address is {ip}')
except socket.gaierror as e:
print(f'Invalid hostname, error raised is {e}')
Ausgabe :
python3.7 ip_address.py jasjdkks.com
Invalid hostname, error raised is [Errno 8] nodename nor servname provided, or not known
#
Referenz: Socket-Modul-API-Dokumentation

