使用python根据ip获取目标地理位置信息

信息安全很重要,你的地理位置可能暴露了!!!

使用python和GeoLite2获取目标的地理位置

  1 #! /usr/bin/env python
  2 #-*- coding:utf-8 -*-
  3
  4 ‘‘‘
  5 Created on 2019年12月8日
  6
  7 @author: Admin
  8 ‘‘‘
  9
 10 from copy import copy
 11 import optparse
 12 import re
 13
 14 import geoip2.database
 15
 16
 17 reader = geoip2.database.Reader(‘GeoLite2-City.mmdb‘)
 18
 19 # 查询IP地址对应的物理地址
 20 def ip_get_location(ip_address):
 21     # 载入指定IP相关数据
 22     response = reader.city(ip_address)
 23
 24     #读取国家代码
 25     Country_IsoCode = response.country.iso_code
 26     #读取国家名称
 27     Country_Name = response.country.name
 28     #读取国家名称(中文显示)
 29     Country_NameCN = response.country.names[‘zh-CN‘]
 30     #读取州(国外)/省(国内)名称
 31     Country_SpecificName = response.subdivisions.most_specific.name
 32     #读取州(国外)/省(国内)代码
 33     Country_SpecificIsoCode = response.subdivisions.most_specific.iso_code
 34     #读取城市名称
 35     City_Name = response.city.name
 36     #读取邮政编码
 37     City_PostalCode = response.postal.code
 38     #获取纬度
 39     Location_Latitude = response.location.latitude
 40     #获取经度
 41     Location_Longitude = response.location.longitude
 42
 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 def seperate_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     if re.match(ip_match, ip_address):
 81         try:
 82             ip_get_location(ip_address)
 83         except Exception as e:
 84             print e
 85     elif re.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             except Exception as e:
 93                 print e
 94         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                 except Exception as e:
105                     print e
106     else:
107         print ‘Wrong type of ip address!‘
108         print ‘100.8.11.58  100.8.11.58-100  alike!‘
109
110 # 主方法数体
111 def main():
112     parser = optparse.OptionParser(‘Usage%prog -i <single ip address> -I <multi ip address> \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.SIp
120     ip_address_multi  = options.MIp
121     if ip_address==None:
122         seperate_ip(ip_address_multi)
123     else:
124         seperate_ip(ip_address)
125
126 if __name__ == ‘__main__‘:
127     main()

结果:

原文地址:https://www.cnblogs.com/perilong16/p/12008715.html

时间: 2024-10-12 23:07:56

使用python根据ip获取目标地理位置信息的相关文章

根据ip获取用户地理位置

各大网站都提供根据ip获取用户地理位置信息,这里以新浪的接口为例子 接口地址为:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146 代码: 1 #region 根据ip获取地点 2 /// 获取Ip归属地 3 /// </summary> 4 /// <param name="ip">ip</param> 5 /// <return

java脚本开发根据客户IP获取IP的具体地理位置信息

原文:java脚本开发根据客户IP获取IP的具体地理位置信息 源代码下载地址:http://www.zuidaima.com/share/1550463468522496.htm 根据客户IP获取IP的具体地址 运行结果: package com.zuidaima.founder.util.ip; import java.net.InetAddress; import java.net.UnknownHostException; /** * 功能描述:测试 *@author www.zuidai

C#关于HttpClient的应用(一):获取IP所在的地理位置信息

public class IpHttpClient:BaseHttpClient { private String appKey; private const string HOST_PATH = "http://apis.baidu.com/apistore/iplookupservice/iplookup"; public IpHttpClient() { this.appKey = BaseHelper.GetValue("BaiduAppKey"); } /

python开发_platform_获取操作系统详细信息工具

python开发_platform_获取操作系统详细信息工具 ''' python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称及版本号,'Windows-7-6.1.7601-SP1' platform.version() #获取操作系统版本号,'6.1.7601' platform.architecture() #获取操作系统的位数,('32bit', 'WindowsPE')

html5获取地理位置信息API

在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位置的信息,该API可以应用在移动设备上的地理定位:为window.navigator 对象新增了一个geolocation属性,可以使用Geolocation API来对该属性进行访问.window.navigator对象中的geolocation属性有三个方法如下: 第一个方法是:getCurrentPosition 该方法来取得

Html5 Geolocation获取地理位置信息(转)

Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. Html5获取地理位置信息是通过Geolocation API提供,使用其getCurrentPosition方法,此方法中有三个参数,分别是成功获取到地理位置信息时所执行的回调函数,失败时所执行的回调函数和可选属性配置项. 如下Demo演示了通过Geolocation获取地理位置信息,并在百度地

HTML5 获取地理位置信息

Geolocation API的基本知识 在HTML5中,为window.navigator对象新增了一个geolocation属性,可以使用Geolocation API来对该属性进行访问.window.navigator对象的geolocation属性存在三个方法. 取得当前地理位置 可以使用getCurrentPosition()方法来取得用户当前的地理位置信息,该方法的定义如下: Js代码 收藏代码 void getCurrentPosition(onSuccess, onError,

PHP 根据IP获取地理位置

1 /** 2 * 根据用户IP获取用户地理位置 3 * $ip 用户ip 4 */ 5 function get_position($ip){ 6 if(empty($ip)){ 7 return '缺少用户ip'; 8 } 9 $url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip; 10 $ipContent = file_get_contents($url); 11 $ipContent = json_decode($ipC

Graylog分析Nginx日志并通过GeoIP2获取访问者IP的地理位置信息

简介: Graylog相对于ELK是较为轻量级的日志管理平台 Graylog官网:https://www.graylog.org/ Graylog-server:Graylog接收来自后端各种应用程序的日志并提供Web访问接口 Graylog Collector Sidecar:负责收集应用程序日志并发送至Graylog-server Elasticsearch:用于索引和保存接收到的日志 MongoDB: 负责保存 Graylog 自身的配置信息 通过Graylog来分析Ngnix日志,获取访