通过IP地址判断客户端是网通的还是电信的。

使用一个纯文本的IP纯真数据库,用Python写了一个小程序。

核心代码:

  1. #!/usr/bin/env python
  2. #site www.jbxue.com
  3. #
  4. # -*- coding: utf-8 -*-
  5. from bisect import bisect
  6. _LIST1, _LIST2 = [], []
  7. _INIT = False
  8. ip2int = lambda ip_str: reduce(lambda a, b: (a << 8) + b, [int(i) for i in ip_str.split('.')])
  9. def _init():
  10. global _LIST, _INIT
  11. if not _INIT:
  12. for l in open('ipdata.txt', 'rb'):
  13. ip1, ip2 = l.split()[:2]
  14. addr = ' '.join(l.split()[2:])
  15. ip1, ip2 = ip2int(ip1), ip2int(ip2)
  16. _LIST1.append(ip1)
  17. _LIST2.append((ip1, ip2, addr))
  18. _INIT = True
  19. def ip_from(ip):
  20. _init()
  21. i = ip2int(ip)
  22. idx = bisect(_LIST1, i)
  23. assert(idx > 0)
  24. if len(_LIST1) <= idx:
  25. return u'unknown ip address %s' % ip
  26. else:
  27. frm, to ,addr = _LIST2[idx - 1]
  28. if frm <= i <= to:
  29. return addr
  30. else:
  31. return u'unknown ip address %s' % ip
  32. if __name__ == '__main__':
  33. print ip_from('115.238.54.106')
  34. print ip_from('220.181.29.160')
  35. print ip_from('115.238.54.107')
  36. print ip_from('8.8.8.8')

python访问纯真IP数据库的代码的更多相关文章

  1. python3通过纯真IP数据库查询IP归属地信息

    在网上看到的别人写的python2的代码,修改成了python3. 把纯真IP数据库文件qqwry.dat放到czip.py同一目录下. #! /usr/bin/env python # -*- co ...

  2. 优化读取纯真IP数据库QQWry.dat获取地区信息

    改自HeDaode 2007-12-28的代码 将之改为从硬盘读取后文件后,将MemoryStream放到内存中,提高后续查询速度 ///<summary> /// 提供从纯真IP数据库搜 ...

  3. 纯真IP数据库(qqwry.dat)转换成最新的IP数据库格式(ipwry.dat)

    纯真IP数据库(qqwry.dat)转换成最新的IP数据库格式(ipwry.dat) 转载自:http://blog.cafeboy.org/2011/02/25/qqwry-to-ipwry/ ht ...

  4. 纯真IP数据库导入mysql

    下载纯真IP数据库 安装后解压到本地为ip.txt 格式为: 1.1.145.0       1.1.147.255     泰国 沙功那空 1.1.148.0       1.1.149.255   ...

  5. PHP利用纯真IP数据库在本地实现IP地址信息查询

    https://blog.csdn.net/myweishanli/article/details/45098693 准备工作: 建议本地IP地址数据库,请到http://www.cz88.net/这 ...

  6. PHP调用纯真IP数据库返回具体地址

    function convertip($ip) { $ip1num = 0; $ip2num = 0; $ipAddr1 =""; $ipAddr2 =""; ...

  7. 【VB.NET】利用纯真IP数据库查询IP地址及信息

    几年前从某个博客抄来的,已经忘记原地址了,如果需要C#版的,可以在博客园搜到吧.我因为自己用,所以转换为了VBNET代码,而且也放置了很久,今天无意间翻出来,就分享给大家吧. 首先,先下载 纯真数据库 ...

  8. Python3.7.1学习(八) Python访问SQL Server数据库

    一.pip install pymssql即可安装pymssql库 二.Python连接SQL Server数据库     实例代码如下: # -*- coding:utf-8 -*-"&q ...

  9. 用纯真ip数据库.dat文件查询ip归属

    网址:http://www.cz88.net/ 下载安装后,有这个文件: 安装路径/ip/qqwry.dat 创建实例的时候吧这个文件路径传入,即可调用. /** * 从纯真IP地址库查询ip归属 * ...

随机推荐

  1. SONY新的圈铁耳机

    最近IFA大会上推出的新旗舰XBA-Z5,镁合金外壳.镀银OFC线,做工比当前的圈铁旗舰XBA-H3上明显好了不止一个档次,让人心动不已.不知道有没有改善XBA-H3的佩戴舒适度的问题.本次并没有发布 ...

  2. 【mybatis】mybatis中放置IN查询拼接sql过长,IN查询进行分批次查询的处理

    需要使用的切割list集合的工具类,链接:https://www.cnblogs.com/sxdcgaq8080/p/9376947.html 处理逻辑,原本的一个LIst,进行切割,循环进行myba ...

  3. Linux makefile 教程

    转自:http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指 ...

  4. rbac控制下无法创建poddisruptionbudgets

    先通过下面命令找到具体的命名空间的rbac kubectl get role --all-namespaces kubectl get role aaa -o yaml 然后倒入到yaml文件中添加 ...

  5. iOS:tableView表头下拉放大的效果

    现在很多app设置了这样的效果,如何实现这一效果呢,其实只需要简单的两个方法,那么我们直接上代码 首先我们在storyBoard里拖一个tableView并设置Navigation,接下来我们在tab ...

  6. oe7升级到oe8中import的使用

     oe 7.0到oe 8.0 切换的时候发现我们系统的很多的module 无法load , import的时候出错, 后来发现oe 8.0自己的addons 也都做了修改在import自己的addon ...

  7. 机器学习:K-近邻算法(KNN)

    机器学习:K-近邻算法(KNN) 一.KNN算法概述 KNN作为一种有监督分类算法,是最简单的机器学习算法之一,顾名思义,其算法主体思想就是根据距离相近的邻居类别,来判定自己的所属类别.算法的前提是需 ...

  8. [Python爬虫] 之九:Selenium +phantomjs抓取活动行中会议活动(单线程抓取)

    思路是这样的,给一系列关键字:互联网电视:智能电视:数字:影音:家庭娱乐:节目:视听:版权:数据等.在活动行网站搜索页(http://www.huodongxing.com/search?city=% ...

  9. PHP中 "{}" 大括号的用法和总结

    在PHP中,大括号“{}”可以起到如下作用: 1.将多个独立语句合并为一个复合语句,例如 if ... else ...中经常如此使用 2.在变量间接引用中进行定界,避免歧义.例如 ${$my_var ...

  10. linux经常使用文字处理命令总结

    linux grep命令 作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...