Wenn ich socket.getsockname()
auf einem Socket-Objekt aufrufen, gibt es ein Tupel von internen IP-Adressen meiner Maschine und den Hafen. Ich möchte jedoch meine externe IP abrufen. Was ist die billigste und effizienteste Art, dies zu tun?Wie bekomme ich die externe IP eines Sockets in Python?
Antwort
Dies ist nicht möglich, ohne die Zusammenarbeit von einem externen Server, denn es gibt eine beliebige Anzahl von NATs zwischen Ihnen sein könnte und den anderen Computer. Wenn es sich um ein benutzerdefiniertes Protokoll handelt, können Sie das andere System bitten, anzugeben, mit welcher Adresse es verbunden ist.
Der einzige Weg, ich daran denken kann, ist garantiert, es geben Ihnen einen Service wie http://whatismyip.com/ zu schlagen ist es zu bekommen.
Nicht ganz sicher, warum dies überstimmt wurde zu bekommen. Dies ist IMHO die einzige Möglichkeit, die externe IP-Adresse eines Systems zu erhalten. Nur weil ein Router Ihnen sagt, was er denkt, dass Ihre IP-Adresse ist, oder was es denkt, es ist die IP-Adresse ist, bedeutet nicht, es keine andere NAT an seinem Platz ist. –
@MatthewSchinckel: +1 für die Erwähnung eines anderen NAT. Außerdem können verschiedene externe Dienste verschiedene externe IPs sehen, z. B. erinnere ich mich daran, dass zum Zugriff auf eine Bibliotheks-Site ich eine andere Route verwenden musste, so dass die Site unterschiedliche (erlaubte) IP sieht, d.h. die öffentliche IP kann vom Ziel abhängen. – jfs
import Buchse
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
s.connect (("msn.com", 80))
s.getsockname ()
unter Verwendung der Adresse vorgeschlagen in der Quelle der http://whatismyip.com
import urllib
def get_my_ip_address():
whatismyip = 'http://www.whatismyip.com/automation/n09230945.asp'
return urllib.urlopen(whatismyip).readlines()[0]
Anmerkung sagen sie nicht tun dies mehr als einmal alle 300 Sekunden – Claudiu
https://github.com/bobeirasa/mini-scripts/blob/master/externalip.py
'''
Finds your external IP address
'''
import urllib
import re
def get_ip():
group = re.compile(u'(?P<ip>\d+\.\d+\.\d+\.\d+)').search(urllib.URLopener().open('http://jsonip.com/').read()).groupdict()
return group['ip']
if __name__ == '__main__':
print get_ip()
War nicht bewusst jsonip.com - danke. Hier ist ein wenig mehr "jsonic" Variation Ihrer Antwort (automatische Formatierung wird die URL vermasselt): json.loads (urllib2.urlopen (urllib2.Request ('http://jsonip.com/', headers = { 'Content- Geben Sie ':' application/json '})). Read()) [' ip '] – chacmool
print (urllib.urlopen('http://automation.whatismyip.com/n09230945.asp').read())
- 1. wie bekomme ich externe IP des Servers von node.js
- 2. C# Sockets, Wie bekomme ich IP-Adressen und Port # aller abhörenden (Sockets) Computer
- 3. Wie bekomme ich die LAN IP eines Clients mit Java?
- 4. Wie bekomme ich die IP/MAC-Adresse eines Blackberry-Geräts?
- 5. Python: Wie bekomme ich die IP-Adresse von einem FQDN
- 6. Erstellen eines Programms, das externe IP überprüft
- 7. Die 'externe' IP-Adresse in Java holen
- 8. Wie bekomme ich die Benutzer-IP-Adresse in Meteor Server?
- 9. Wie bekomme ich die Clients externe IP, ich benutze Gcloud/kubernetes
- 10. Wie bekomme ich Browser-IP oder Hostname?
- 11. Wie bekomme ich die Außenkontur eines Grundrisses in Python?
- 12. Wie bekomme ich Omnicompletion für externe Python-Bibliotheken?
- 13. Sockets in C#: Wie bekomme ich den Antwort-Stream?
- 14. Wie bekomme ich die Remote-Adresse eines Clients in Servlet?
- 15. Sockets und mehrere IP-Adressen
- 16. Wie bekomme ich die IP-Adresse vom Socket In Windows
- 17. Wie bekomme ich die Zeitzone durch IP-Adresse in PHP
- 18. Wie bekomme ich die Server/Website-IP-Adresse in asp.net?
- 19. Wie bekomme ich die IP-Adresse in einem PageMethod?
- 20. Die beste Methode zum Öffnen eines Sockets in Python
- 21. Wie bekomme ich die vollständige Verknüpfung eines Bildes mit Python?
- 22. Wie bekomme ich die Versionsnummer eines Python-Moduls durch Code?
- 23. Wie bekomme ich die Keycodes in Python
- 24. Symfony2 - Wie bekomme ich externe (öffentliche) und interne (lokale) IPs?
- 25. Wie verbinde ich einen Client mit einem Server mit Sockets, mit IP-Adresse in Python?
- 26. Wie bekomme ich startActivityForResult für externe Aktivitäten?
- 27. bekomme externe IP-Adresse durch eine c-Funktion
- 28. Python Freigeben eines Netzwerk Sockets mit Multiprocessing.Manager
- 29. Wie bekomme ich die IP-Adresse eines bestimmten Adapters in Windows XP durch den Befehl
- 30. Wie bekomme ich die IP-Adresse eines Nicht-Gruppenbesitzers in WiFi Direct?
Eine weitere große Website, die eine no frills-Lösung bietet, ist eine HTTP-Anforderung von [icanhazip.com] (http://icanhazip.com) – Droogans