Bir soket nesnesinde socket.getsockname()
numaralı telefonu aradığımda, makinemin dahili IP'sinin ve bağlantı noktasının bir kopyasını döndürür. Ancak harici IP'mi geri almak istiyorum. Bunu yapmanın en ucuz, en verimli şekli nedir?Python'da bir soketin harici IP'sini nasıl alabilirim?
cevap
Bu, harici bir sunucudan işbirliği olmadan mümkün değildir, çünkü siz ve diğer bilgisayar arasında herhangi bir sayıda NAT olabilir. Özel bir protokolse, diğer sistemin bağlı olduğu adresi bildirmesini isteyebilirsiniz.
Bunu size vermeyi garanti etmenin tek yolu, http://whatismyip.com/ gibi bir hizmete ulaşmaktır.
bu aşağı seçildi Tam olarak emin değil. Bu IMHO, herhangi bir sistemin harici IP adresini almanın tek yoludur. Bir yönlendiricinin IP adresinizin ne olduğunu veya IP adresi olduğunu düşündüğü şeyin başka bir NAT olmadığı anlamına gelmediğini söylemesidir. –
@MatthewSchinckel: Başka bir NAT'tan bahsetmek için +1. Aynı zamanda, farklı dış servisler farklı harici IP'leri görebilir, örneğin bir kütüphane sitesine erişmenin farklı bir yol kullanması gerektiğini hatırlıyorum, böylece site farklı (izin verilen) ip görür, yani genel ip hedefe bağlı olabilir. – jfs
içe soket
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
s.connect (("msn.com", 80))
s.getsockname (adresinin kullanılması)
import urllib
def get_my_ip_address():
whatismyip = 'http://www.whatismyip.com/automation/n09230945.asp'
return urllib.urlopen(whatismyip).readlines()[0]
notu bunu her 300 saniyede bir kez yapmamak için söylediler – Claudiu
0 kaynağında önerdi
'''
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()
jsonip.com'un farkında değildim - teşekkürler. İşte cevabınızın biraz daha "jsonic" varyasyonu (otomatik biçimlendirme URL'yi karıştırıyor): json.loads (urllib2.urlopen (urllib2.Request ('http://jsonip.com/', headers = {'Content- ':' Application/json '})) yazın. Read()) [' ip '] – chacmool
print (urllib.urlopen('http://automation.whatismyip.com/n09230945.asp').read())
- 1. İlk kez soketin çıkarılması
- 2. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 3. Swift - Kapatılan soketin kapanması nasıl engellenir?
- 4. Soketin PHP'de açık olup olmadığını nasıl anlarsınız?
- 5. Java - ObjectInputStream ile bir soketin dinlenmesi
- 6. Soketin AF_INET özelliği yok mu?
- 7. Zeromq hangi soketin PubSub desenine bağlanmalı
- 8. Soketin hala bağlı olup olmadığı nasıl kontrol edilir?
- 9. tcpsocket'i yeniden bağlayın (veya kapalı soketin nasıl algılanacağını öğrenin)
- 10. Bir DynamicMethod'dan IL bytearray'i nasıl alabilirim?
- 11. Bir Soketin Giriş Aktarımının Unmarshallingi Soketi kapatır mı?
- 12. Geçici bir dosyayı nasıl açabilirim ve dosya adını nasıl alabilirim?
- 13. Bir ContentPresenter'ın Çocuklarını nasıl alabilirim?
- 14. UIImage'ı bir CGContextRef'den nasıl alabilirim?
- 15. Bir div metnini nasıl alabilirim?
- 16. XDocument'den nasıl bir NameTable alabilirim?
- 17. Bir URL başlığı nasıl alabilirim
- 18. Bir AlertDialog'dan sonuçları nasıl alabilirim?
- 19. Harici bir başlık değiştirme
- 20. Android'de dosya yolunu nasıl alabilirim?
- 21. Harici URL'den html kaynak kodu nasıl alınır?
- 22. Windows'ta node.js'de harici bir programı nasıl çalıştırıyorsunuz?
- 23. Bir link_to harici URL'ye parametreler nasıl eklenir?
- 24. Express'te, kullanıcıyı harici bir URL'ye nasıl yönlendiririm?
- 25. JSON verilerini harici bir URL'den nasıl alırım?
- 26. JavaScript'te harici bir dosya nasıl yüklenir?
- 27. WPF'de harici bir uygulamayı nasıl barındırabilirim?
- 28. mustache.js şablon dosyamı nasıl alabilirim?
- 29. PHP'de harici dosyadan değişkenleri yükleme
- 30. SunucuSocket + client Soket - istemcinin IP adresini nasıl alabilirim?
bir fırfırlar çözüm sunar diğer büyük web[icanhazip.com] dan bir HTTP isteği elde etmektir (http://icanhazip.com) – Droogans