环境:python 3.6
运行环境: Windows 10
前言:
-
非常感谢大佬做的这个项目,可以很快速的解决查询IP地址的事情。可以很方便的解决一些业务上的需求。拜谢!
-
大佬项目地址:GitHub项目地址
PS:现已经支持:java、C#、php、c、python、nodejs、php扩展(php5和php7)、golang、rust、lua、lua_c, nginx。语言的集成
因为大佬的数据源来源80%是淘宝的IP地址库,因此在大佬提供的数据集无法检索出的内容,可以通过淘宝IP查询来完成。
1.打开项目地址后,克隆该项目到本地。 主要的文件就是红框中的两个,bindng中是各个语言的集成和使用demo,data就是应用的数据文件。(压缩文件在12M左右)
测试使用可以先用:
python binding/python/testSearcher.py ./data/ip2region.db
直接运行
2.因为本次使用时在python语言环境下进行的,因此,我们只需要使用两个文件。
data/ip2region.db文件,和bindng\python\ip2Region.py
如果要集成一个自己使用的三方包,那就把这两个文件放到自定义的文件夹下,文件夹放在python运行的sit-packages文件下。
3.本着用起来尽量少些代码和条件的原则,我们需要修改下ip2Region.py中init里dbfile文件的引入
dbfile填入绝对地址,方可正常引用。
4.因为调用的方法是btreeSearch(),返回的是字典类型,并且汉字都是二进制,因此
这样返回的信息就不需要每一次调用都手动修改了。
5:使用
from OwnTools.ip2Region import Ip2Region
class Test:
def __init__(self):
self.ip_search = Ip2Region()
def get_ip_area(self, ip):
cookies = {
'thw': 'cn',
'cna': 'd5P3FugRUwMCAbR8hKL4N3Wl',
'XSRF-TOKEN': 'a4c468ba-245d-495c-a3a6-4d40f7ee84ac',
'tfstk': 'cIZ5BpsMOQA79mbe486q8d-Yi4odZB9sdaGuFrDqqDlp4V25ijKZ1xJu-BKxWx1..',
'v': '0',
'l': 'eBO1gIU4QDjYa5B8BO5anurza779uCAflsPzaNbMiInca6gFTFMqrNQqKQHM7dtjgt5mpU-rA42DhRnk7WULRxi2PY46IMfKCA9ere1..',
}
headers = {
'Connection': 'keep-alive',
'Accept': '*/*',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Origin': 'http://ip.taobao.com',
'Referer': 'http://ip.taobao.com/ipSearch',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
}
data = {
'ip': ip,
'accessKey': 'alibaba-inc'
}
response = requests.post('http://ip.taobao.com/outGetIpInfo', headers=headers, cookies=cookies, data=data,
verify=False)
return response.json()
def run():
ip=input("需要查询的IP")
location_info = self.ip_search.get_ip_area_btree(ip)
area_infos = l_info.split("|")
area_s = area_infos[2]
area_city = area_infos[3]
sup = area_infos[4]
#当省和市信息都是0的情况下,进入淘宝ip查询
if area_s == "0" and area_city == "0":
ali_ip = self.get_ip_area(ip)
area_s = ali_ip["data"]["region"]
area_city = ali_ip["data"]["city"]
sup = ali_ip["data"]["isp"]
print("IP:【{}】--供应商:【{}】---地址【{}-{}】".format(ip, sup, area_s, area_city))
本文只是一个简单的介绍向的demo使用,简单且粗糙。
如果能帮到你,是我的荣幸。
若有错漏处,欢迎留言指正。
我们下次见~