使用pyGeoIP模块

原文:https://www.studytonight.com/network-programming-in-python/pygeoip-module

你一定是偶然发现了各种显示你的位置、城市、地区等的网站。一旦你访问他们的网页。想过怎么做吗?这些网站使用某种付费数据库,帮助他们非常准确地将物理位置与 IP 地址关联起来。在本课中,我们将使用一个免费的数据库,它将大致做同样的事情。数据库名为geoliteticity . dat

为了将 IP 地址与物理位置进行映射或关联,我们将使用 python 的pyGeoIP模块。

要安装pyGeoIP模块,使用pip命令:

pip install pygeoip

pygeoip提供多种不同类型的查找,例如:

  1. Country Lookup

    >>> import pygeoip
    
    >>> gi = pygeoip.GeoIP('GeoLiteCity.dat')
    >>> gi.country_name_by_addr('14.139.61.12')
    

    印度

  2. 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'}

  3. 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' }

  4. 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 地址,但是您可以转换这个程序,在运行时开始接受命令行输入。还记得吗?在本教程中,我们学习了如何使用argparseoptparse进行操作