从IP地址查找地理位置


7

如何从IP地址找到城市/州或国家/地区等位置?

是否有ruby gem或python模块来执行此操作?或者,如果有一个拥有API的网站。

Answers:


7

你可以使用http://ipinfo.io API:

$ curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.3860,-122.0838",
  "org": "AS15169 Google Inc.",
  "postal": "94040"
}

如果您只对一个字段感兴趣,可以将其添加到URL以将其作为纯文本:

$ curl ipinfo.io/8.8.8.8/loc
37.3860,-122.0838

$ curl ipinfo.io/8.8.8.8/country
US

如果你正在寻找一个python模块https://github.com/juanpabloaj/pyipinfo是一个简单的包装器,或者http://geocoder.readthedocs.org/en/stable/功能更全面且内置支持ipinfo.io和其他提供商。


2

是的,您可以使用IP地理位置API查找IP地址的城市,州或国家/地区位置。我知道有几个网站向公司或像你我这样的好奇个人提供此类服务。

但是,无论可用的是什么,都会有不同的功能,因此在决定适合您要求的软件之前,您需要仔细检查它们。关于您提到的编程语言,通常最好的IP地理定位API支持多种编程语言,包括Ruby和Python。

您还指定了城市,州或国家/地区等详细信息。好吧,无论您选择哪种API,每当您进行查询时,这些地理数据点肯定是输出结果中的最高点。但IP地理定位API通常会提供更多详细信息,例如时区和邮政编码,如果您希望创建更清晰的地理定位IP地址图片,这些信息非常重要。

以下是我个人使用的API。

https://geoipify.whoisxmlapi.com/

此API有助于在250个国家/地区的950多万个IP块中查找IP地址的地理位置(请在此处查看示例输出)。在我看来,这个数字应该足以包括现在使用的几乎所有已知的IP地址。

该提供商还拥有一个地理定位数据库,其中包含IPv4和IPv6地址,在全球120,000多个城镇中拥有超过340,000个地点。我喜欢的是它每周更新一次,可以CSV或JSON格式下载。

在提出请求之前,您需要一个个人API密钥,您可以从网站的“我的产品”页面获取该密钥。要进行位置搜索,您可以选择输入目标的IPv4或IPv6地址,域名或电子邮件地址。

搜索结果将包含目标的国家,地区,城市,纬度,经度,邮政编码,时区,ISP,域数组,自治系统编号,系统名称,API系统路径和自治系统网站的URL。

它们以默认的JSON格式显示,但您可以选择使用JSON或XML。系统兼容性应该不是问题,因为输出支持9种编程语言,包括Ruby和Python。

如果您需要发出多个地理位置请求,还有一个在线批量IP地理位置查找服务,它声称允许您一次检查多达100,000个IP地址。

https:// https://geo.ipify.org/

我使用的第二家提供商声称可以从250个国家/地区的800多万个IP块中提供实时地理定位。

他们还有一个IP地理定位数据库,其中包含来自几乎所有现有IP地址的近500万条累积记录(请查看此处的示例输出)。他们每月更新一次,并且可以以相对较小的40 Mb压缩文件大小下载。

发出搜索请求需要个人API密钥,您可以从此提供商的订阅页面获取该密钥。要进行位置搜索,您需要输入目标的IPv4地址。

查询结果显示目标的精确位置详细信息,包括国家,地区,城市,纬度,经度,邮政编码和时区。输出可以XML或JSON格式显示。

API还支持9种编程语言 - 即Javascript,C#,Java,PHP,NodeJS,Perl,PowerShell,以及Python和Ruby。

如果您使用IP地理位置API,则很容易找到IP地址的城市,州或国家/地区位置。但是,请记住,您的选择必须能够提供充足的覆盖范围和编程语言兼容性,以便能够为您提供所搜索的内容。Geoipify.whoisxmlapi.com和Geo.Ipfy在这方面绝对可以提供帮助。


1

你可以去这里......任何这样的服务只是对任何IP地址的粗略估计,但这正是你要找的。

http://www.geobytes.com/iplocator.htm(只需输入“要查找的IP地址”并点击提交)


1
我有一长串的IP地址,所以我希望我能通过一个脚本来完成
ed1t 2011年

0

如果你想从你正在轻松导航的网站上看到一个地理定位,你应该为Firefox安装Flagfox附加组件:你会在地址栏附近找到一个标志,然后在其上点击更多信息(城市,IP ......)。

此外,您可以使用http://geo.flagfox.net查看任何IP地址或服务器名称的相同详细信息。


0

Hostip.info是一个开源项目,其目标是构建/维护将IP地址映射到城市的数据库。他们的about页面解释了依赖于填充此数据库的数据源。

使用HostIP,有两种方法可以从IP地址获取位置数据:

它们还有一个设计良好且易于使用的RESTFUL API:只需在GET请求字符串中的i p =之后传入您的IP地址):

import urllib

response = urllib.urlopen('http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true').read()

print(response)

其次,项目网站还可以下载完整的数据库

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.