1 #! /usr/bin/env python

2 #-*- coding:utf-8 -*-

3

4 '''

5 Created on 2019年12月8日6

7 @author: Admin8 '''

9

10 from copy importcopy11 importoptparse12 importre13

14 importgeoip2.database15

16

17 reader = geoip2.database.Reader('GeoLite2-City.mmdb')18

19 #查询IP地址对应的物理地址

20 defip_get_location(ip_address):21 #载入指定IP相关数据

22 response =reader.city(ip_address)23

24 #读取国家代码

25 Country_IsoCode =response.country.iso_code26 #读取国家名称

27 Country_Name =response.country.name28 #读取国家名称(中文显示)

29 Country_NameCN = response.country.names['zh-CN']30 #读取州(国外)/省(国内)名称

31 Country_SpecificName =response.subdivisions.most_specific.name32 #读取州(国外)/省(国内)代码

33 Country_SpecificIsoCode =response.subdivisions.most_specific.iso_code34 #读取城市名称

35 City_Name =response.city.name36 #读取邮政编码

37 City_PostalCode =response.postal.code38 #获取纬度

39 Location_Latitude =response.location.latitude40 #获取经度

41 Location_Longitude =response.location.longitude42

43 if(Country_IsoCode ==None):44 Country_IsoCode = "None"

45 if(Country_Name ==None):46 Country_Name = "None"

47 if(Country_NameCN ==None):48 Country_NameCN = "None"

49 if(Country_SpecificName ==None):50 Country_SpecificName = "None"

51 if(Country_SpecificIsoCode ==None):52 Country_SpecificIsoCode = "None"

53 if(City_Name ==None):54 City_Name = "None"

55 if(City_PostalCode ==None):56 City_PostalCode = "None"

57 if(Location_Latitude ==None):58 Location_Latitude = "None"

59 if(Location_Longitude ==None):60 Location_Longitude = "None"

61

62 print('================Start===================')63 print('[*] Target:' + ip_address + 'GeoLite2-Located')64 print(u'[+] 国家编码:' +Country_IsoCode)65 print(u'[+] 国家名称:' +Country_Name)66 print(u'[+] 国家中文名称:' +Country_NameCN)67 print(u'[+] 省份或州名称:' +Country_SpecificName)68 print(u'[+] 省份或州编码:' +Country_SpecificIsoCode)69 print(u'[+] 城市名称 :' +City_Name)70 print(u'[+] 城市邮编 :' +City_PostalCode)71 print(u'[+] 纬度:' +str(Location_Latitude))72 print(u'[+] 经度 :' +str(Location_Longitude))73 print('===============End======================')74

75 #检验和处理ip地址

76 defseperate_ip(ip_address):77 ip_match = r"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[1-9]|0?[1-9]0)\.)(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){2}(?:25[0-4]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[1-9]|0?[1-9]0)$"

78 ip_match_list = r"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[1-9]|0?[1-9]0)\.)(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){2}(?:25[0-4]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[1-9])-(?:25[0-4]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[1-9]|0?[1-9]0)$"

79

80 ifre.match(ip_match, ip_address):81 try:82 ip_get_location(ip_address)83 exceptException as e:84 printe85 elifre.match(ip_match_list, ip_address):86 ip_start = ip_address.split('-')[0].split('.')[3]87 ip_end = ip_address.split('-')[1]88 #如果ip地址范围一样,则直接执行

89 if(ip_start ==ip_end):90 try:91 seperate_ip(ip_address.split('-')[0])92 exceptException as e:93 printe94 elif ip_start >ip_end:95 print 'the value of ip, that you input, has been wrong! try again!'

96 exit(0)97 else:98 ip_num_list = ip_address.split('-')[0].split('.')99 ip_num_list.pop()100 for ip_last in range(int(ip_start), int(ip_end)+1):101 ip_add = '.'.join(ip_num_list)+'.'+str(ip_last)102 try:103 ip_get_location(ip_add)104 exceptException as e:105 printe106 else:107 print 'Wrong type of ip address!'

108 print '100.8.11.58 100.8.11.58-100 alike!'

109

110 #主方法数体

111 defmain():112 parser = optparse.OptionParser('Usage%prog -i -I \n \n{ Egg: python getIpLocation.py -i(I) 100.8.11.58(100.8.11.58-100) }')113 parser.add_option('-i', dest='SIp',type='string', help='specify pcap filename')114 parser.add_option('-I', dest='MIp',type='string', help='specify pcap filename')115 (options, args) =parser.parse_args()116 if options.SIp == None and options.MIp ==None:117 print(parser.usage)118 exit(0)119 ip_address =options.SIp120 ip_address_multi =options.MIp121 if ip_address==None:122 seperate_ip(ip_address_multi)123 else:124 seperate_ip(ip_address)125

126 if __name__ == '__main__':127 main()

python根据ip获取地理位置_使用python根据ip获取目标地理位置信息相关推荐

  1. python 通过ip获取城市_如何根据普通ip地址获取当前地理位置

    前言: 我们现在需要做的功能是根据ip地址获取当前地理位置,是Web 服务API,获取后的位置信息一般是城市级别的,不是很精确的那种获取. (1)开发者需要做的准备工作: 需要登录百度地图的api,点 ...

  2. python查询ip归属地_基于Python的免费IP地址归属地查询

    一.开通接口 IP地址归属地查询服务使用聚合数据提供的免费接口,每天可以100次免费调用.可以通过 https://www.juhe.cn/docs/api/id/1 注册及开通. 二.请求接口 #! ...

  3. python自动获取天气_用python获取天气数据,并作定时播报

    原标题:用python获取天气数据,并作定时播报 数据挖掘入门与实战 公众号: datadw 思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早 ...

  4. python爬取qq邮箱_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  5. python自动生成采集规则_快速制作规则及获取规则提取器API

    1. 引言 前面文章的测试案例都用到了集搜客Gooseeker提供的规则提取器,在网页抓取工作中,调试正则表达式或者XPath都是特别繁琐的,耗时耗力,工作枯燥,如果有一个工具可以快速生成规则,而且可 ...

  6. python自动生成采集规则_快速制作规则及获取规则提取器AP

    一. 引言 之前文章所用的例子中的规则都是固定的,如何自定义规则再结合提取器提取我们想要的网页内容呢?对于程序员来说,理想的目标是掌握一个通用的爬虫框架,每增加一个新目标网站就要跟着改代码,这显然不是 ...

  7. python怎么打印列表长度_关于python:生成器输出的长度

    本问题已经有最佳答案,请猛点这里访问. Python提供了一种很好的方法来获取渴望的可迭代len(x)的长度. 但是对于以生成器理解和函数表示的惰性可迭代对象,我找不到类似的东西. 当然,写这样的东西 ...

  8. 一行python代码值多少钱_一行python代码

    Life is short, just use Python. 自从08年接触Python,就有爱不释手的感觉,逐渐地,有些不忍地疏远了Perl 和Shell编程,因为python 的优雅么? 不全是 ...

  9. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

最新文章

  1. 初涉SQL Server性能问题(3/4):列出阻塞的会话
  2. java课后习题_【整理】java私塾教程课后习题
  3. SQL Server 数据库的统计查询
  4. 《白鹿原》金句摘抄(四)
  5. 全数字实时仿真平台SkyEye和同步数据流语义与翻译正确性验证
  6. 网关策略跟计算机名有关系吗,交换机网关与与之相连的计算机的网关有没有必然关系...
  7. Java编译带包文件
  8. flink入门_Flink从入门到放弃-入门篇
  9. 玩客云刷Armbian5.9.0安装青龙提示“面版解决服务异常,请手动执行ql check检查服务状态”
  10. Sping AOP概述
  11. 网页如何实现平均分成左右两部分
  12. 通过这些快捷键解决YouTube的“空格键问题”
  13. oracle左连接应用场景,Oracle左连接left join 的实际操作与应用
  14. 安卓软件开发需要学什么软件?Android开发最佳实践手册全网独一份,面试必问
  15. 使用mysql_upgrade升级mysql5.1至5.6的数据库升级实施方案
  16. WEB应用项目开发-网店购物系统开发
  17. 中小学校园网服务器采购指南
  18. python网络安全工具箱界面,Python开发案例:设计启动工具箱,显示图形界面的方式...
  19. 升级或重装Win10之后如何激活Win10的方法分享
  20. ATFX国际:英国与欧盟签订新协议,畅通与北爱尔兰之间贸易往来

热门文章

  1. IDEA Maven 聚合项目(多模块)搭建--最精简
  2. 从 Web 图标演进历史看最佳实践
  3. Web 性能优化:使用 CSS font-display 控制字体加载和替换
  4. 可以“作为医生”的 GPT-3,究竟是炒作还是名副其实?
  5. 一秒带你穿越!AI 修复百年前北京影像,路边摊、剃头匠太真实了
  6. 低代码的兴起:花更少的钱,赚更多的钱
  7. 特斯拉市值站上万亿元大关,BBA如何在“自动驾驶”上做空它?
  8. 划重点!2019年这类程序员非常稀缺,年薪超平均水平10倍
  9. 阿里云存储负责人吴结生:安全可靠是云存储立身之本, 智能技术将激活存储技术新变革...
  10. 均薪连续三年过万,北上深人才需求大 !| 5G 人才报告