前言
IP地址是互聯(lián)網(wǎng)中唯一標(biāo)識一個設(shè)備的地址,有時候需要判斷一個IP地址所屬的地區(qū),這就需要用到IP地址歸屬查詢。本文將介紹Python如何通過IP地址查詢所屬地區(qū)并展示代碼。
?
一、 IP地址歸屬查詢
IP地址歸屬查詢又稱IP地址歸屬地查詢、IP地址歸屬地定位、IP地址查詢、IP地址定位等,是通過查詢互聯(lián)網(wǎng)上公共的IP數(shù)據(jù)庫,來得到一個IP地址所屬的地理位置、運營商等信息。
二、 IP地址的分類
IP地址分為IPv4和IPv6兩種,IPv4是32位地址,IPv6是128位地址。通常我們使用的是IPv4地址, 其中一個IPv4地址由4個數(shù)字組成,每個數(shù)字之間用點號“.”隔開,每個數(shù)字的取值范圍為0~255。例如: 192.168.1.1。
三、 IP地址轉(zhuǎn)二進(jìn)制
IP地址在計算機中以二進(jìn)制表示,需要將IP地址轉(zhuǎn)為二進(jìn)制數(shù),這就需要用到位運算符。在Python中,使用bin()函數(shù)將十進(jìn)制數(shù)轉(zhuǎn)為二進(jìn)制數(shù)。例如:
ip = "192.168.1.1"
binary_ip = ".".join([bin(int(x)+256)[3:] for x in ip.split(".")])
print(binary_ip)
輸出結(jié)果為:11000000.10101000.00000001.00000001
四、 IP地址歸屬地查詢庫
在Python中,有多個第三方庫可以使用,例如pygeoip、maxminddb等。在本文中,我們將使用淘寶IP地址庫,淘寶IP地址庫是淘寶開放平臺提供的免費IP地址庫,包括IPv4和IPv6地址庫。我們只需通過HTTP請求即可獲取到所需的IP地址信息。
五、 Python代碼實現(xiàn)
接下來,我們將通過Python代碼來實現(xiàn)IP地址歸屬地查詢。代碼分為兩部分:第一部分是將IP地址轉(zhuǎn)換為二進(jìn)制位,第二部分是通過HTTP請求查詢IP地址歸屬地。
首先,我們需要導(dǎo)入所需的庫:
import requests
然后,實現(xiàn)將IP地址轉(zhuǎn)為二進(jìn)制:
def get_binary_ip(ip):
? ? """
? ? 將IP地址轉(zhuǎn)為二進(jìn)制
? ? :param ip: IP地址,例如:"192.168.1.1"
? ? :return: IP地址的二進(jìn)制表示,例如:"11000000.10101000.00000001.00000001"
? ? """
? ? binary_ip = ".".join([bin(int(x) + 256)[3:] for x in ip.split(".")])
? ? return binary_ip
接下來,實現(xiàn)通過HTTP請求查詢IP地址歸屬地:
def get_location_by_ip(ip):
? ? """
? ? 通過HTTP請求查詢IP地址歸屬地
? ? :param ip: IP地址,例如:"192.168.1.1"
? ? :return: IP地址的歸屬地,例如:"廣東省深圳市"
? ? """
? ? url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ip
? ? try:
? ? ? ? response = requests.get(url, timeout=5)
? ? ? ? data = response.json()
? ? ? ? if data["code"] == 0:
? ? ? ? ? ? location = data["data"]["region"] + data["data"]["city"]
? ? ? ? else:
? ? ? ? ? ? location = "未知"
? ? except Exception as e:
? ? ? ? print(e)
? ? ? ? location = "未知"
? ? return location
最后,我們將兩個函數(shù)結(jié)合起來,實現(xiàn)完整功能:文章來源:http://www.zghlxwxcb.cn/news/detail-666362.html
import requests
def get_binary_ip(ip):
? ? """
? ? 將IP地址轉(zhuǎn)為二進(jìn)制
? ? :param ip: IP地址,例如:"192.168.1.1"
? ? :return: IP地址的二進(jìn)制表示,例如:"11000000.10101000.00000001.00000001"
? ? """
? ? binary_ip = ".".join([bin(int(x) + 256)[3:] for x in ip.split(".")])
? ? return binary_ip
def get_location_by_ip(ip):
? ? """
? ? 通過HTTP請求查詢IP地址歸屬地
? ? :param ip: IP地址,例如:"192.168.1.1"
? ? :return: IP地址的歸屬地,例如:"廣東省深圳市"
? ? """
? ? url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ip
? ? try:
? ? ? ? response = requests.get(url, timeout=5)
? ? ? ? data = response.json()
? ? ? ? if data["code"] == 0:
? ? ? ? ? ? location = data["data"]["region"] + data["data"]["city"]
? ? ? ? else:
? ? ? ? ? ? location = "未知"
? ? except Exception as e:
? ? ? ? print(e)
? ? ? ? location = "未知"
? ? return location
if __name__ == "__main__":
? ? ip = "192.168.1.1"
? ? binary_ip = get_binary_ip(ip)
? ? location = get_location_by_ip(ip)
? ? print("IP地址:{}的歸屬地是:{}".format(ip, location))
六、 總結(jié)
本文介紹了Python如何通過IP地址查詢所屬地區(qū)并展示了代碼實現(xiàn)。通過學(xué)習(xí)本文,你可以掌握將IP地址轉(zhuǎn)為二進(jìn)制數(shù)和通過HTTP請求查詢IP地址歸屬地的方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-666362.html
到了這里,關(guān)于python判斷ip所屬地區(qū) python 判斷ip 網(wǎng)段的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!