更多的理论问题。是的,我知道这些问题在这里不受欢迎。但假设像MaxMind GeoIP这样的API不存在,并且您想要构建将IP地址转换为其所在城市的服务。您会做什么?你将如何去解决这个问题?如何在不使用API的情况下查找IP地址的位置?
2
A
回答
4
- 使用whois数据库找出IP分配给谁。
- 使用DNS对IP地址执行反向查找。
- 使用traceroute基于猜测导致该主机
举个例子路由器上的位置,让我们来看看stackoverflow.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 stackoverflow.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记录:在加利福尼亚州圣迭戈的一个时代华纳(跑腿)缓存DNS服务器
现在,回到stackoverflow.com定位过程:
$ traceroute stackoverflow.com
traceroute to stackoverflow.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.stackoverflow.com (64.34.41.58) 54.121 ms 52.65 ms 54.166 ms
16 * * *
(... remaining time outs removed ...)
路由跟踪输出证实了我们的怀疑,stackoverflow.com在NY,NY举行。
这是在没有API的情况下处理地理定位的一种方法。
1
我真的在猜测这里,但这可能工作。
IP范围由IANA分配给区域提供商。他们有五个。反过来,每个区域供应商都将IP范围分配给最终用户和互联网服务提供。 如果您可以从地区提供商及其所在的ISP客户那里获取/购买信息。
相关问题
- 1. 如何在不使用地图的情况下找到用户的位置android
- 2. 如何使用Google API获取IP地址的地理位置?
- 3. 如何从PHP中的IP地址查找用户位置
- 4. 如何在不使用JAVA IP的情况下获得MAC地址?
- 5. 如何在不知道IP的情况下查找本地网络服务器?
- 6. 使用设备IP地址查找位置
- 7. ip2location仅用于查找特定位置的ip地址
- 8. IP地址位置
- 9. 如何查找dnsserver的ip地址?
- 10. JavaScript的:如何查找IP地址
- 11. 如何在codeigniter中查找IP地址?
- 12. 如何在as3中查找ip地址?
- 13. 多少个IP地址确实在以下情况下
- 14. 在不使用谷歌地图的情况下显示地图上的位置
- 15. 英国IP地址查找API
- 16. 在java中使用IP地址查找位置的示例代码?
- 17. 如何从IP地址列表中查找IP地址范围
- 18. 如何在不使用READ_CONTACTS权限的情况下查找联系人的地址?
- 19. 如何在没有“查找我的iPhone”的情况下获取iPhone的位置?
- 20. 如何查找应用程序使用的所有IP地址?
- 21. 在java中使用IP地址查找mac地址
- 22. NET:在不使用IP地址的情况下检查URL的响应状态代码
- 23. 如何在不使用第三方URL的情况下获取IPhone的公共IP地址
- 24. Javascript:如何在不使用任何第三方的情况下获得内部IP地址?
- 25. 如何使用Javascript代码查找客户端的IP地址
- 26. 如何使用QDnsLookup类查找网站的IP地址?
- 27. 如何查找Web服务使用者的IP地址?
- 28. 如何在不使用伪指令的情况下加载内存地址?
- 29. 如何在不依赖Google API的情况下使用HTML5地理位置获取城市和国家?
- 30. 如何:在不使用MvcContrib.Grid的情况下使用MvcContrib.Pagination查看