我想用Python知道我的Internet提供商(外部)IP地址(寬帶或其他)。使用Python查找網絡(外部)IP地址
有多臺機器連接到該網絡。我嘗試了不同的方式,但我只有本地和公共IP我的機器。我如何通過Python找到我的外部IP地址?
在此先感謝。
我想用Python知道我的Internet提供商(外部)IP地址(寬帶或其他)。使用Python查找網絡(外部)IP地址
有多臺機器連接到該網絡。我嘗試了不同的方式,但我只有本地和公共IP我的機器。我如何通過Python找到我的外部IP地址?
在此先感謝。
使用該腳本:
import urllib, json
data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read())
print data["ip"]
沒有JSON:
import urllib, re
data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1)
print data
其他方式,它是解析使用ifconfig(= Linux)或IPCONFIG(=窗)的命令,但照顧與翻譯Windows系統 (ipconfig被翻譯)。
針對linux的lib的示例: ifparser。
您必須使用您信任的外部來源。 Python2.x:
from urllib import urlopen
import json
url = 'http://api.hostip.info/get_json.php'
info = json.loads(urlopen(url).read())
print(info['ip'])
如果你想要更多的信息,你可以從info
打印更多的值。
非蟒蛇oneliner:
wget -q -O- icanhazip.com
在我看來,最簡單的解決方法是
f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text
這就是所有。
請注意,它確實需要非默認額外的[Python請求模塊](http://www.python-requests.org)。 – Forage
更好,更優雅 –
安全選項(使用https
支持)
from requests import get
get('https://ipapi.co/ip/').text
附: requests
模塊便於支持https
。不過你可以試試httplib。
你嘗試過什麼樣的方式? – heinst
我已經試過這個,'import socket socket.gethostbyname(socket.gethostname())'。現在我得到分配給我的機器的IP地址。沒有網絡提供商的IP地址 – Mulagala
@timgeb,如果你看到這個鏈接http://ipinfodb.com/,你可以知道我到底想要什麼。這裏的整個信息來了,國家,城市,提供者IP等 – Mulagala