使用pyGeoIP
模块
原文:https://www.studytonight.com/network-programming-in-python/pygeoip-module
你一定是偶然发现了各种显示你的位置、城市、地区等的网站。一旦你访问他们的网页。想过怎么做吗?这些网站使用某种付费数据库,帮助他们非常准确地将物理位置与 IP 地址关联起来。在本课中,我们将使用一个免费的数据库,它将大致做同样的事情。数据库名为geoliteticity . dat。
为了将 IP 地址与物理位置进行映射或关联,我们将使用 python 的pyGeoIP
模块。
要安装pyGeoIP
模块,使用pip
命令:
pip install pygeoip
pygeoip
提供多种不同类型的查找,例如:
Country Lookup
>>> import pygeoip >>> gi = pygeoip.GeoIP('GeoLiteCity.dat') >>> gi.country_name_by_addr('14.139.61.12')
印度
Region Lookup
>>>import pygeoip >>> gi = pygeoip.GeoIP('GeoLiteCity.dat') >>> gi.region_by_addr('14.139.61.12')
{“region code”:u“07”,“country code”:“IN”}
>>>import pygeoip >>> gi = pygeoip.GeoIP('GeoLiteCity.dat') >>> gi.region_by_name('apple.com')
{'region_code': u'CA ',' country_code': 'US'}
City Lookup
>>>import pygeoip >>> gi = pygeoip.GeoIP(‘GeoLiteCity.dat’) >>> gi.record_by_addr(‘14.139.61.12’)
{ ' city ':u ' new drigh ',' regioncode': u'07 ',' area_code': 0,' time zone ':' Asia/加尔各答',' dma_code': 0,' metro_code': None,' country_code3': 'IND ',' latitude ':28.599999999994,' postal_code': None,'经度':77.199999999999999,' country_code': 'IN ',' country_name': 'India ','大陆':' AS' }
Organization Lookup
>>>import pygeoip >>> gi = pygeoip.GeoIP('GeoLiteCity.dat') >>> gi.org_by_name('dell.com')
戴尔计算机公司
使用pygeoip
模块的程序
#!usr/bin/env python
import pygeoip
gi = pygeoip.GeoIP('GeoLiteCity.dat')
def printRecord(ip):
rec = gi.record_by_name(ip)
city = rec['city']
country = rec['country_name']
longitude = rec['longitude']
lat = rec['latitude']
print '[+] Address: ' + ip + ' Geo-located '
print '[+] ' +str(city)+ ', '+str(country)
print '[+] Latitude: ' +str(lat)+ ', Longitude: '+ str(longitude)
ip = # Enter an IP(in single quotes)
printRecord(ip)
现在在这个程序中,我们已经硬编码了 IP 地址,但是您可以转换这个程序,在运行时开始接受命令行输入。还记得吗?在本教程中,我们学习了如何使用argparse
和optparse
进行操作