谷歌如何在桌面上计算我的位置?

114

这个让我有些困惑,不确定你们中是否有人在桌面版谷歌地图上使用“我的位置”功能(没有GPS/手机设备)。如果你的浏览器有使用Google Gears技术(最易用的是Google Chrome),那么在Google Maps的缩放功能上方会出现一个蓝色圆圈,点击后(没有登录到我的Google帐户),使用标准Wi-Fi连接到我的个人路由器和正常的ISP互联网连接,它竟然能以100%的准确度定位到我当前的精确位置。

它是如何做到的?他们在这里简要提到了一下,但并未完全解释清楚,只说我的浏览器知道我在哪里...

我很困惑,怎么可能呢?

我很感兴趣,因为我想在将来的编程项目中整合它,只需要一些背景了解,但目前似乎文献资料并不充分。


1
我的超级用户问题的“副本”http://superuser.com/questions/12495/how-does-google-my-location-work - Stefano Borini
他们找到了我家的确切位置,这真是令人惊讶。 - Ben Shelock
1
@badbod99 - 我相信他们也可以通过其他方式找到它 :P @Stefano - 你还没有答案,我认为这与编程有关,因此应该在stackoverflow上问。 @ben - 没错! - Shadi Almosri
9个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
95

我目前在东京,以前在瑞士。然而,直到几天前我的位置并没有精确定位,只知道在广泛的东京地区。今天我试了一下,结果显示我似乎在瑞士。为什么呢?

其实秘密在于我现在通过无线网络连接,我的无线路由器已经被识别出来(多亏了与我附近其他WiFi的关联),位于瑞士一个非常准确的区域。现在,我的WiFi已经移至东京,但是查询系统仍然认为WiFi路由器在瑞士,因为它要么没有关于此时周围其他WiFi的信息,要么无法解决冲突的信息(即,关于我的WiFi路由器的具体信息与我的IP地理位置信息相矛盾,后者将我定位在远东)。

那么,回答你的问题,Google或者他的代理人通过“wardriving”技术进行了WiFi信号地图的作图。每次向系统发出查询请求时(可能符合W3C草案的地理位置API规范),您的计算机会发送它所看到的WiFi标识符,然后系统会执行两个操作:

  1. 如果您经过的WiFi中有地理位置信息,则查询其数据库,并返回“wardrived”(即通过Wardriving采集到的)位置信息,如果存在,最终通过三角定位法等方式得到更准确的结果。WiFi网络越多,定位精度就越高。
  2. 将您看到但数据库中没有的其他网络添加到它们的数据库中,以便日后再次使用。

正如您所看到的,系统是自我建立的。您需要的唯一一件事是良好的种子。之后,它会以“50米区块”的方式扩展(即新发现的WiFi连接的范围)。

当然,如果您真的想让系统变得混乱起来,您可以开始与“反全球定位运动”的同伴在全球范围内交换WiFi路由器。


你在我回答的时候发布了对你的帖子的编辑 :) - Shadi Almosri
它似乎非常准确地知道我在房子里的位置,尽管我没有将任何无线通信适配器/卡连接到我的系统。 - Henry
2
一切看起来都很好。但是我的台式电脑没有任何形式的无线网络?然而,当我打开谷歌地图时,它确切地知道我的位置。如果我尝试跟踪我的IP或使用浏览器位置,它与谷歌地图所显示的位置相差甚远?这是怎么回事? - Zapnologica
9
这是一个非常好的问题:“在没有安装无线网卡的情况下,谷歌地图如何从我的桌面获取我的位置?”通过我自己进行测试,我发现仅当我使用我的Google账户登录时,它才知道我的位置。当我使用另一个未登录Google账户的浏览器时,我的位置将显示在最近的大城市(IP地理定位)。我相信谷歌会利用我的安卓智能手机来与桌面上的谷歌地图分享我的真实位置。 - Kim K.
优秀的解释! - Ramashish Baranwal
这也解释了我的困惑,我正在使用 VPN,但谷歌找到了我的位置。我通过 RDP 连接到第三方计算机,并在该计算机上的谷歌地图上发现了我准确的位置(就是我所在的位置)。 - riderchap

14

这比你想象的要简单得多。你已经登录了使用相同Google账户的移动设备和桌面上的Chrome浏览器。谷歌只是预期你大部分时间会带着你的手机。他们从你的手机中提取位置数据,并假设你当前的桌面会话的位置是相同的。

我通过从工作地点远程连接到我家中的Windows电脑,并检查Google地图来证明了这一点。它显示我的位置与工作地点的Linux上的Chrome浏览器相同。

如果你没有已登录Google的移动设备,那么他们能做的就只是查找由你的ISP分配的IP地址的GeoIP数据。它通常会极其不准确。


2
感谢您与我们分享您的测试。那是一个全新水平的答案。 - M at
这完全是胡说八道!!我的手机GPS一直都是关闭的,也没有连接WiFi。他们怎么可能获取到我的手机精确位置?不可能。所以你的假设是错误的。连接VPN,然后去谷歌看看,你没有移动但会显示其他位置。我认为ISP泄露了客户地址和IP数据给谷歌。所以像往常一样,客户被出卖了。 - Tommix
Tommix,我认为你看太多CSI了。GeoIP数据不够精细。最多只能在国家或州一级上准确。例如,广泛使用的MaxMind GeoIP2 City数据库可以正确解析58%的IP地址到美国内城市(请记住是城市,而不是街道或门牌号)。在50公里半径范围内,这个数字提高到87%。 - Bruce

10

他们使用IP地理定位与将附近的无线网络扫描结果与其侧面的数据库进行比较的组合方式(该数据库是通过收集Android手机用户使用GPS时的GPS坐标和wifi扫描数据来构建的)。


好的,假设他们已经获取了我的IP地理位置信息,定位到伦敦,但我不太明白接下来的部分。他们如何扫描附近的无线网络,又是如何知道“附近”在哪里?我的WiFi路由器是我自己的,不允许其他人访问,所以他们无法得知或使用它。 - Shadi Almosri
1
请看我的评论:它们运行客户端代码(在Chrome等浏览器中),因此Google无法访问您的路由器,但客户端浏览器可以访问您的无线网卡并确定附近有哪些无线网络。 - pxb
那么谷歌是如何知道Wi-Fi SSID的位置的呢?我有一个SSID叫“suckMyBalls”,他们怎么知道SuckMyBalls的位置呢?如果基于其他WIFI SSID - 他们是如何得到它们的位置的呢?答案很简单 - ISP将客户IP和位置数据出售给谷歌。 - Tommix

7
我终于明白了。最大的问题是他们如何找到我周围的无线网络,并知道这些网络在哪里。 似乎是类似于以下过程: 1. skyhookwireless.com [或类似公司] 已经绘制了许多无线接入点的位置,我认为是通过与 Google 街景类似的方法去拍摄所有照片。 2. 使用 Google Gears 和我的浏览器,我们可以报告我看到和拥有的周围无线网络。 3. 将这些无线接入点与它们的地理位置进行比较并三角定位我的位置。 参考资料:Slashdot

不,这个理论是错误的。没有人在映射什么。互联网服务提供商把你的IP地址出售给谷歌。 - Tommix

2
根据谷歌地图的帮助文档:
如果您的浏览器无法显示图片,请更换一个!

1

拒绝WiFi网络的想法!

抱歉,伙计们...我不认为这是可行的。使用周围的WiFi网络似乎是一种高度不准确和无效的数据收集方法。现在的WiFi网络根本不会长时间停留在一个地方。

想想看,WiFi网络每天都在变化。更不用说MiFi和Adhoc网络了,它们是“设计”成随用户移动的。设备损坏,网络设置改变,人们搬家...依靠您所在区域的“WiFi网络”似乎非常不准确,最终可能甚至无法比IP查找提供更精细的粒度。

我认为iPhone用户“扫描并发送”WiFi调查数据回谷歌,以及wardriving,也许与Google Maps“街景”映射结合使用,似乎是一种非常可能的收集此数据的方法,但实际上,它并不适用于商业模式。

哦,顺便说一下,在我之前的帖子中我忘了提到...当我最初确定我的位置时,我通过桌面上的以太网连接到路由器时被精确定位在地图上。我的桌面电脑上没有WiFi卡。

因此,如果那个“附近的WiFi网络”理论是正确的...那么我不应该能够如此精确地确定我的位置。

我会给我的ISP Skyrim打电话,询问他们是否共享他们的网络拓扑结构以便在他们的网络上启用地理定位。


1
你是通过以太网连接的,但连接的是无线路由器吗?这篇文章介绍了如何通过MAC地址/BSSID获取无线路由器的物理位置。 - Shadi Almosri
无论收集位置数据是否作为商业模式,谷歌都在这样做 - http://googleblog.blogspot.com/2009/08/bright-side-of-sitting-in-traffic.html - Dan Dascalescu

0

我知道你可以查找IP地址以获取大致位置,但它并不总是准确的。也许他们正在使用这个功能?

更新:

通常,您的浏览器使用周围Wi-Fi接入点的信息来估计您的位置。如果没有Wi-Fi接入点在范围内,或者您的计算机没有Wi-Fi,则可能会使用您计算机的IP地址来获取大致位置。


1
那太容易了,而且不够准确。你最多只能将其映射到最近的交换机,而不能映射到我的精确位置。 - Shadi Almosri
有时候它根本不准确。我们显示在格拉斯哥,即使我们在伦敦数百英里之外。 - pxb
关于更新 - 它如何知道我周围有哪些WiFi接入点? :P - Shadi Almosri
1
这句话是从您提供的链接中引用的。我假设浏览器(必须是支持的浏览器,因此肯定有客户端特定的代码才能使其工作)可以从操作系统获取有关PC可见的Wifi接入点的信息(即使它们没有连接),并使用服务器查找有关它们的信息以确定它们的位置。然后,您可以使用三角定位来计算计算机的位置。 - pxb
IP地址是由互联网服务提供商分配的。因此,除了互联网服务提供商之外,没有人能够知道确切的IP地址和位置。互联网服务提供商会将您的个人数据出售给谷歌等公司。 - Tommix

0

根据您的IP地址(无线或固定),可以获取您的大致位置。

例如,可以查看hostip.infomaxmind,它们基本上提供了从IP地址到地理坐标的映射。它们可能使用许多启发式和数据源。这种系统可能具有足够的准确性,以在大多数情况下将您放在正确的主要城市中。

Google可能还会使用类似的方法,除此之外还使用WiFi技巧。


1
IP地址的位置已经被知道了一段时间,而且很容易确定到城市级别,这个问题感兴趣的是位置的精度... - Shadi Almosri

0
  • 谷歌通过使用连接到路由器的任何手机GPS来记录Wifi路由器位置,当您使用Google地图或手机上的位置时。然后谷歌知道连接到该Wifi路由器的每个设备都使用相同的位置。
  • 当GPS关闭或没有手机连接到路由器时,谷歌使用IP地理定位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,