Chrome如何知道我的地理位置?

26

Chrome似乎非常准确地检测了我的位置。 它是如何做到的? 你能给我指出源代码吗?


2
我认为他们利用了你的IP地址以及他们对互联网的大量知识(数据)。 - vulkanino
6个回答

57

1
+1 很好的回答,格式也很整齐。你指向了 Google Gears 的源代码,虽然 Chrome 的源代码可能在位置提供程序方面基本相同。 - Thomas
奖励问题:使用内置地理定位和使用Google的地理定位API有什么利弊?https://developers.google.com/maps/documentation/geolocation/intro - Sebastian Patten

8

您可以使用设备上可用的不同服务和硬件来获取您的位置信息。最常见的是:GPS、wifi信息、蜂窝塔。另外还有IP查找,但这并不精确,也不涉及设备上的任何特殊事项。

在您的情况下,最有可能使用的是关于您的wifi网络的信息。存在着将wifi网络与位置相连接的巨大数据库,这些数据库是由具有GPS和wifi的汽车(例如Google Street View汽车)创建的。从您的计算机到服务器的传输根据W3C地理位置API规范进行,这是HTML5的一部分。

Chrome源代码? 在这里是一个起点。或者,如果您喜欢老式的文件浏览器:http://src.chromium.org/svn/trunk/src/chrome/browser/geolocation/

通过wifi进行本地化的实现文件:

  • wifi_data_provider_mac.cc
  • wifi_data_provider_linux.cc
  • wifi_data_provider_win.cc

0

PC上的浏览器没有GPS,但它有一个外部IP地址(通常是路由器的外部IP地址)。如果同一路由器后面的其他组件有GPS,则将位置固定到该IP地址,并通过位置服务将此位置附加到浏览器。


0
他们会查看以下几个方面: - 位置上的无线网络唯一标识符(SSID)和信号强度。 - IP地址(公共IP地址) - GPS(如果可用) - 移动网络位置数据(如果可用)

-1

1
Chrome实际上会读取你周围的Wi-Fi网络,并将它们的SSID提交给Google,以返回一个大致的地址。如果Google已经驾驶他们的街景车,它可以非常准确,即使你的台式机/笔记本电脑没有GPS传感器也可以。 - Dan Dascalescu
@DanDascalescu Wi-Fi 可能只是决策过程的一部分。此外,您必须区分 Chrome 的移动版和桌面版!我认为 Chrome 主要使用 HTML5 地理位置 API,其中 Wi-Fi 只是其中的一部分。 - splash

-2

最近我在做HTML 5地理位置分配的任务。它在所有现代浏览器(IE9,Safari,FF,Opera)中都得到支持。
但是当我使用Chrome时,它不被支持。我花了几个小时来解决这个问题。
最后我找到了一个解决方案:

Chrome中的地理位置默认是关闭的。要激活它,用户必须转到他们的Chrome快捷方式,在“快捷方式”选项卡下,在目标行的末尾添加--enable-geolocation


2
这不是真的。更准确地说,你的答案是在2012年发布的,多年来它已经不再正确。Chrome 17/18肯定默认启用了地理定位。 - mhenry1384
这很可怕!地理定位如此精确(甚至可以到 Wi-Fi / 街道地址),这是否意味着我现在访问的每个 Web 服务器都知道我的街道地址,准确到几栋房子? - Irina Rapoport
不,网站在获取地理位置数据之前需要用户的许可。自从这个回答发布以来,这一点就一直是正确的。 - lights0123

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