如何在不使用 API 的情况下查找 IP 地址的位置?

Posted

技术标签:

【中文标题】如何在不使用 API 的情况下查找 IP 地址的位置?【英文标题】:How to find location of an IP Address Without using APIs? 【发布时间】:2011-04-01 17:28:49 【问题描述】:

更多的理论问题。是的,我知道这些类型的问题在这里不受欢迎。但是假设不存在像 MaxMind GeoIP 这样的 API,并且您想构建一个将 IP 地址转换为所在城市的服务。您会怎么做?你将如何解决这个问题?

【问题讨论】:

【参考方案1】:
    使用 whois 数据库找出 IP 分配给谁。 使用 DNS 对 IP 地址进行反向查找。 使用 traceroute 根据通往主机的路由器猜测位置

例如,让我们看看 ***.com (64.34.119.12)

$ whois 64.34.119.12 | egrep "(OrgName)|(City)|(State)|(Country)"
OrgName:        Peer 1 Network Inc.
City:           New York
StateProv:      NY
Country:        US

whois 告诉我们他们可能在纽约,纽约。

$ host 64.34.119.12
12.119.34.64.in-addr.arpa domain name pointer ***.com.

反向 DNS(PTR 记录)在这里没有帮助。但是,许多 ISP 确实具有区域特定的反向 DNS 条目,可以帮助完成此过程(尤其是对于动态分配的主机)。举个例子:

$ host 24.25.195.1
1.195.25.24.in-addr.arpa domain name pointer sndgca-dns-cac-01.san.rr.com.

这台主机显然是通过它的 PTR 记录来识别和定位的:位于加利福尼亚州圣地亚哥的时代华纳(Road Runner)缓存 DNS 服务器。

现在,回到 ***.com 的定位过程:

$ traceroute ***.com
traceroute to ***.com (64.34.119.12), 64 hops max, 40 byte packets
ms
 (... removed the first few hops ...)
 8  ae-6-6.ebr1.Chicago1.Level3.net (4.69.140.189)  30.9 ms  28.855 ms  25.183 ms
 9  ae-2-2.ebr2.NewYork2.Level3.net (4.69.132.66)  54.373 ms  54.197 ms  48.171 ms
10  ae-6-6.ebr2.NewYork1.Level3.net (4.69.141.21)  48.250 ms  50.712 ms  51.293 ms
11  ae-62-62.csw1.NewYork1.Level3.net (4.69.148.34)  59.493 ms ae-82-82.csw3.NewYork1.Level3.net (4.69.148.42)  51.694 ms ae-62-62.csw1.NewYork1.Level3.net (4.69.148.34)  58.315 ms
12  ae-3-89.edge1.NewYork1.Level3.net (4.68.16.142)  51.529 ms ae-2-79.edge1.NewYork1.Level3.net (4.68.16.78)  50.77 ms ae-3-89.edge1.NewYork1.Level3.net (4.68.16.142)  50.567 ms
13  10ge-te-1-1.nyc-75bre-dis-2.peer1.net (216.187.115.77)  50.776 ms  51.193 ms  56.166 ms
14  gig2-0.nyc-gsr-b.peer1.net (216.187.123.5)  54.994 ms  58.813 ms  51.794 ms
15  gwny01.***.com (64.34.41.58)  54.121 ms  52.65 ms  54.166 ms
16  * * *
(... remaining time outs removed ...)

traceroute 输出证实了我们怀疑 ***.com 托管在纽约州纽约市。

这是在没有 API 的情况下解决地理定位问题的一种方法。

【讨论】:

【参考方案2】:

我真的在这里猜测,但这可能有效。

IP 范围由IANA 分配给区域提供商。其中有五个。反过来,每个区域提供商都会将 IP 范围分配给最终用户和互联网服务提供商。 如果您可以从区域提供商及其 ISP 客户那里获取/购买信息,那么您就是在做生意。

【讨论】:

以上是关于如何在不使用 API 的情况下查找 IP 地址的位置?的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ Linux,如何在不使用 IP 的情况下在网络上查找邻居(仅限 MAC)

win32 api根据wifi和IP地址对笔记本电脑进行地理定位

如何在不使用collect()和for循环的情况下将一个(IP地址)的特定部分与RDD python pyspark中另一列中的其他IP地址进行比较

如何在不使用搜索的情况下查找 youtube 频道当前是不是正在直播?

如何在不通过 Web 调用的情况下在浏览器中查找地理位置

如何在不使用API 的情况下获得Google云端硬盘的可用空间?