为了向我的用户显示正确的内容,我根据他们的 IP 地址获取他们的国家/地区。我收到了几份来自美国用户的报告,称内容显示不正确。我总是检查他们的 IP 地址,我的国家/地区检测 API 是正确的,但出于某种原因,美国用户被分配了来自其他国家/地区的 IP 地址。
这是常规做法吗?这与网际网络灾难? 有没有更好的方法获取用户的位置?
编辑:我正在使用一个名为 MaxMind 的 API 根据 IP 获取位置,到目前为止,这个问题只发生在 IPv4 用户身上。我遇到的最后一个问题是一位美国用户,他的 IP 地址位置显示为马来西亚,他们的 IP 地址是 161.139.224.31,我只知道该用户使用的是 iOS 设备。
答案1
Maxmind 是一项很好的服务,尽管偶尔会出现错误,因为现在 IPv4 块非常稀缺,而且在灰色市场上被交易和转售。如果您确实发现了错误,您可以向他们报告,尽管这看起来不是一个错误。
这基本上就是我确认 IP 地址位置的方法:
首先,我来看看 Maxmind 对此有何看法。他们的在线工具告诉我它在马来西亚并注册到马来西亚理工大学。但真的是这样吗?
其次,我将检查该地址的 whois 记录。APNIC 还表示它已注册到 UTM。对于你所谓的美国人来说,这看起来不太好……
inetnum: 161.139.0.0 - 161.139.255.255
netname: UTMNET
descr: Universiti Teknologi Malaysia
country: MY
admin-c: UTM1-AP
tech-c: UTM1-AP
status: ALLOCATED PORTABLE
mnt-by: MAINT-MY-UNITEKMY
mnt-irt: IRT-UNITEKMY-NON-MY
changed: [email protected]
changed: [email protected] 20120907
source: APNIC
irt: IRT-UNITEKMY-NON-MY
address: Center for Information and Communication Technology
e-mail: [email protected]
abuse-mailbox: [email protected]
admin-c: UTM1-AP
tech-c: UTM1-AP
auth: # Filtered
mnt-by: MAINT-MY-UNITEKMY
changed: [email protected] 20120906
source: APNIC
role: Universiti Teknologi Malaysia
address: Center for Information and Communication Technology
country: MY
phone: +607-5532470
fax-no: +607-5566164
e-mail: [email protected]
admin-c: UTM1-AP
tech-c: UTM1-AP
nic-hdl: UTM1-AP
mnt-by: MAINT-MY-UNITEKMY
changed: [email protected] 20120906
source: APNIC
% This query was served by the APNIC Whois Service version 1.69.1-APNICv1r0 (UNDEFINED)
最后,我将执行跟踪路由并查看到达 IP 地址的实际网络路径。在本例中...
$ traceroute 161.139.224.31
traceroute to 161.139.224.31 (161.139.224.31), 30 hops max, 60 byte packets
1 172.28.5.1 (172.28.5.1) 0.181 ms 0.146 ms 0.127 ms
2 62-210-251-1.rev.poneytelecom.eu (62.210.251.1) 1.317 ms 1.480 ms 1.611 ms
3 195.154.1.170 (195.154.1.170) 1.011 ms 1.236 ms 1.300 ms
4 prs-b7-link.telia.net (62.115.40.77) 0.956 ms 0.924 ms 0.917 ms
5 prs-bb3-link.telia.net (213.155.132.192) 1.779 ms prs-bb3-link.telia.net (213.155.134.220) 1.652 ms prs-bb2-link.telia.net (213.155.134.228) 0.898 ms
6 adm-bb4-link.telia.net (213.155.137.156) 15.224 ms adm-bb3-link.telia.net (62.115.135.62) 11.010 ms adm-bb4-link.telia.net (213.155.136.24) 13.345 ms
7 adm-b2-link.telia.net (62.115.141.51) 12.709 ms adm-b2-link.telia.net (213.155.137.197) 12.043 ms adm-b2-link.telia.net (62.115.141.67) 12.702 ms
8 telekommalaysia-ic-149786-adm-b2.c.telia.net (213.248.99.146) 11.203 ms telekommalaysia-ic-301284-adm-b2.c.telia.net (62.115.8.206) 11.131 ms 12.056 ms
9 * * *
10 58.27.55.202 (58.27.55.202) 207.612 ms 202.755 ms 203.625 ms
11 * * *
12 * * *
13 * * *
14 * * *
15 *^C
我们在这里看到,它从我在巴黎的位置开始,然后被传递到阿姆斯特丹,然后到马来西亚电信,之后我们就没有得到进一步的回报了。经过同样的检查,最终响应的 IP 地址也是马来西亚电信的 IP 地址。
目前看来,这个 IP 地址不太可能位于之前提到的马来西亚大学以外的任何地方。如果用户完全确定这是错误的,他们可以尝试从他们的终端运行跟踪路由(例如使用用于此目的的 iOS 应用),您可以检查其结果以寻找任何可能的线索。
最后,用户可能连接到大学提供的 VPN。在这种情况下,无论用户身处世界何处,他都会被识别为在大学,如果他希望识别出他的实际位置,则应关闭 VPN 并直接连接。
答案2
不只是美国用户,其他国家的用户也有可能出现这种情况。
出现这种情况的原因有很多。
- 在国外旅行并从那里登录的用户将被报告为来自该国的用户。
- 跨国公司通常只拥有一个国家的 IP 块,并将这些地址分配给其所有办事处。
- 显然,对于在多个国家运营的 ISP 来说也是如此
- 如果您的域名/网站托管在其他国家/地区,您最终可能会获得该国家/地区的服务器 IP 范围,并且美国的主机通常比其他地方的主机更昂贵。
最后一种情况可能与您无关,但其他情况可能与您有关(是的,我曾经遇到过所有这些情况)。