python +ip2region +淘宝IP查询 组合查询IP信息,做到毫秒级查询

环境:python 3.6
运行环境: Windows 10
前言

  1. 非常感谢大佬做的这个项目,可以很快速的解决查询IP地址的事情。可以很方便的解决一些业务上的需求。拜谢!

  2. 大佬项目地址: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使用,简单且粗糙。
如果能帮到你,是我的荣幸。
若有错漏处,欢迎留言指正。

我们下次见~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值