Python实现根据IP地址查询归属信息

Python实现根据IP地址查询归属信息

根据IP地址查询归属信息

使用GeoIP2数据库

下载链接, 提前更换你的YOUR_LICENSE_KEY

# Database URL
https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=YOUR_LICENSE_KEY&suffix=tar.gz

下载数据文件

假如 YOUR_LICENSE_KEY=xxxxxxfdfdfafad

wget -O GeoLite2-City.tar.gz -c https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=xxxxxxfdfdfafad&suffix=tar.gz

tar zxvf GeoLite2-City.tar.gz && mv GeoLite2-City*/*.mmdb ./ rm -rf GeoLite2-City_*

使用数据文件

首先安装geoip2:

$ pip install geoip2

下面是一段测试代码:

# City Database
import geoip2.database

dbfile = "/apps/data/geoip2/GeoLite2-City.mmdb"
with geoip2.database.Reader(dbfile) as reader:
    response = reader.city('123.123.123.123')
    print(
        response.country.iso_code,
        response.country.name,
        response.country.names['zh-CN'],
        response.city.name,
        response.city.names['zh-CN'],
        response.traits.network
    )

输出效果:

CN China 中国 Beijing 北京 123.123.112.0/20

OK!效果演示完毕,自己动手实现你的功能吧。

更新数据文件方法

下载更新程序 geoipupdate

配置文件GeoIP.conf(注册帐号中可以获取配置信息):

# `AccountID` is from your MaxMind account.
AccountID 12345690

# `LicenseKey` is from your MaxMind account
LicenseKey xxxxxxxx

# `EditionIDs` is from your MaxMind account.
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country

更新命令(假如存储位置为/apps/data/geoip2/):

geoipupdate -d /apps/data/geoip2/

之后配置cron调度,定期更新配置文件即可了。


转载本文时请注明出处及本文链接地址Python实现根据IP地址查询归属信息

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注