Website-Suche

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)}')

Python IP-Adresse vom Hostnamen abrufen

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