如何在 Django 上使用 GeoIP 在 ASN 中查询已知 IP 地址?

Posted

技术标签:

【中文标题】如何在 Django 上使用 GeoIP 在 ASN 中查询已知 IP 地址?【英文标题】:How to query ASN for a known IP address with GeoIP on Django? 【发布时间】:2015-03-14 12:04:22 【问题描述】:

我在 Python 2.7 上使用 Django 1.73。

如何使用 GeoIP Django 在 ASN 中查询已知 IP 地址?

from django.contrib.gis.geoip import GeoIP
g = GeoIP()
g.city('72.14.207.99') #returns the city
g.country('google.com') #returns the country

如何使用 Django 查询 asn? (已在 GEO_PATH 上安装了 ASN 二进制文件)

编辑 我研究并发现存在一个 Python 包 PyGeoIP, 在documentation 中存在一个 ASN 查找,但我不知道如何直接调用 GeoDjango 而不是使用这个包。

【问题讨论】:

你可以查询whois服务器。 我不喜欢外部调用。 见这里:***.com/questions/4468628/… 哦,不是 whois,但 ipinfo.io 提供了一个轻量级的 json api。我在问 MaxMind 的 GeoLiteASN 二进制文件是否有可能? 我不知道,查看他们的文档,他们应该有一些代码示例。 【参考方案1】:

如果您乐于使用 pygeoIp,它非常简单。

首先从GeoIP下载ASN数据库,然后通过pygeoip安装

pip install pygeoip  

然后

>>> gi = pygeoip.GeoIP('/path/to/GeoIPASNum.dat')
>>> gi.org_by_name('cnn.com')
'AS5662 Turner Broadcasting'

>>> gi.org_by_addr("90.223.167.43")
u'AS5607 BSKYB-BROADBAND-AS'

如果你不想下载任何数据库你可以使用pyip2asn

In [1]:import pyip2asn

In [2]:# Generate ASN Description Dictionary in order to speed up the IPv4 to ASN lookup.

In [3]: asn_dict = pyip2asn.get_asn_dictionary()
In [4]: pyip2asn.ip2asn("8.8.8.8",asn_dict)
Out[4]: (15169, u'GOOGLE - Google Inc.')

【讨论】:

以上是关于如何在 Django 上使用 GeoIP 在 ASN 中查询已知 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GeoIP2() django 模型从 IP 地址调用中提取保存的信息以显示在我的 html 中

GeoIP + Django,无效的 GeoIP 城市数据文件

如何在(Django GeoIP)中为每个国家/地区显示广告

Django GeoIP 导入 [重复]

Django GeoIP按城市名称获取国家

在 Django 中为 GeoIP2 创建项目设置