【问题标题】:How does HTML5 Geolocation Work?HTML5 地理位置如何工作?
【发布时间】:2011-05-11 22:26:39
【问题描述】:

Chrome 和 Firefox 已实现 HTML 地理位置。

我的问题是:它是如何工作的?他们是否在本地有一个数据库并从提供者那里获取信息然后尝试匹配它?

数据库存储在哪里? 可以访问吗?

更新1:地理定位的唯一缺点是浏览器必须请求用户许可,这对可用性来说确实是一件坏事。我了解安全问题,但我仍然不知道这将如何成为流行的解决方案。

Update2:Firefox 正在使用 Google WebService 来检测位置。现在考虑到他们现在是竞争对手,这似乎很奇怪。而且这种行为对我来说真的很出乎意料...我希望每个浏览器都会开启(可能是离线)解决方案。

更新 3:所以浏览器实际上会嗅探使用您的无线网卡的路由器吗?

Update4:浏览器到底向谷歌网络服务发送了什么信息?检测到的 SSID 似乎没问题(如果谷歌根据他们的物理位置跟踪他们以在数据库中查找匹配信息,这是有道理的),但它在谷歌没有扫描的国家如何运作得如此好呢?您的浏览器发送的其他信息是您的 ip,但这不足以确定您的确切位置,对吗?

关于可能实现这一点的其他浏览器。他们应该怎么做?该 api 没有记录,只有旧的不推荐使用的 GEAR api 提供了一些线索。所以这并不是真正公开的。

【问题讨论】:

标签: browser html geolocation


【解决方案1】:

我对 update4 中最后一个问题的猜测是,他们可能会根据您使用的设备不时更新您的位置。例如,如果您仅使用您的 PC 访问网络,并且附近没有已知的 wifi 网络,那么您的位置将由 IP 地址确定,但是有关您的网络的信息将被收集,稍后假设您连接 iPhone 或任何其他设备GPS 到您的同一个 wifi 网络,并在其上使用 GPS,谷歌会将这些 GPS 坐标与您的 wifi SSID 或 IP 地址相匹配。因此,此后,每当您的 PC 上的浏览​​器发送地理定位请求时,它都会检查 IP 和 SSID 是否匹配(可能还有其他一些东西,例如附近的 SSID 等等),如果它们匹配,它将返回先前由配备 GPS 的设备确定的位置。这当然只是一个猜测,但它可能是这样的......而且,即使您从未将任何配备 GPS 的设备连接到您的网络,但它仍然可以准确地确定它,这可能是因为附近的 wifi 网络,谷歌已经知道了.. 他们所做的工作确实很棒:)

更新:
Firefox
Google Chrome

【讨论】:

    【解决方案2】:

    来自Firefox's "How does it work"

    当您访问位置感知网站时,Firefox 会询问您是否要分享您的位置。
    如果您同意,Firefox 会收集有关附近无线接入点和您计算机 IP 地址的信息。然后 Firefox 将此信息发送给默认的地理定位服务提供商 Google Location Services,以获取您的位置估计。然后将该位置估计值与请求的网站共享。
    如果您说您不同意,Firefox 将不会做任何事情。

    来自"How Chrome determines your location"

    如果您允许 Google Chrome 与某个网站共享您的位置,则该浏览器会将本地网络信息发送到 Google 位置服务以获取您的位置估计信息。然后,浏览器可以与请求站点共享您的位置。在与他们分享您的位置之前,您应该检查网站的隐私政策。

    【讨论】:

      【解决方案3】:

      不管怎样,API 规范本身与地理位置实现无关。因此,虽然 Mozilla Firefox 和 Google Chrome 确实都依赖于通过 Google 的位置服务数据库启用网络的地理定位,但这并不是标准的要求。例如,在某些情况下,iPhone 上的 Mobile Safari 会使用 GPS,而不是 WiFi 三角测量或蜂窝基站地理定位,这取决于在给定时刻哪种定位服务最准确和可访问。

      我们可以希望未来的浏览器会提供一些位置提供者的选择。我同意,如果浏览器支持不需要向第三方发送 WiFi ID 列表的地理定位技术,这将对用户隐私和功能有好处;我怀疑随着 GPS 传感器更多地集成到智能手机和笔记本电脑中,我们将看到允许您将 GPS 传感用于 W3C 地理定位 API 的浏览器。为台式计算机提供一个可以在浏览器设置中手动指定位置的功能也可能很好,这也将与当前规范兼容。

      【讨论】:

      • “为台式电脑提供一个可以在浏览器设置中手动指定位置的功能可能也不错” - 好主意
      • @Jedi.za 有像 Location Guard 这样的插件来欺骗数据,你甚至可以在没有插件的情况下做到这一点,例如在 about:config 中通过将 geo.provider.network.url 的值设置为类似的 Firefox data:application/json,{"location": {"lat": 40.7590, "lng": -73.9845}, "accuracy": 27000.0} (makeuseof.com/tag/…)
      【解决方案4】:

      首先,一个很棒的演示

      在 Chrome 中尝试this

      工作原理

      Here 是您的答案。点击“谷歌浏览器如何确定您的位置”。

      从那个页面:

      如果您允许 Google Chrome 与某个站点共享您的位置,则该浏览器会将本地网络信息发送到 Google 位置服务以获取您的位置估计信息。然后,浏览器可以与请求站点共享您的位置。 Google 位置服务用于估计您的位置的本地网络信息包括有关可见 WiFi 接入点的信息,包括其信号强度;有关您本地路由器的信息;您计算机的 IP 地址。 Google 位置服务的准确性和覆盖范围因位置而异。

      Google Chrome 会保存您的位置信息,以便轻松检索。此信息会定期更新;更新频率取决于您本地网络信息的变化。

      此外,我相信 Google 位置服务包含一个数据库,该数据库是根据 Google 街景货车收集的数据构建的,因为它们将位置与来自路由器的 WiFi 信号(或至少 used to)进行匹配。

      访问数据库

      至于数据库(谷歌定位服务),this SO question 将帮助您访问它。

      【讨论】:

      • 这太疯狂了。我做了测试,它准确地指出了我在哪里——我说的是街上的房子。我会很高兴找出我的邻居,但它如何找到我在哪所房子?疯了。
      • 是的,很疯狂。基本上,它会根据你正在使用的路由器的广播找出你所在的房子,谷歌已将其标记为在你家的位置。
      • 非常有价值的东西——而且因为我的公司有一个基于位置的网站,所以来到主页并根据您所在的位置定制它会很棒。这个 HTML5 怎么样,从我看到的只是谷歌,而不是 HTML-5 特定的?
      • @Chetan 它是 W3C 的官方标准,但由与 HTML5 工作组不同的组(地理定位工作组)创建。从技术上讲,它不是 HTML5 标准的一部分,而是一个单独的开放标准。
      • 有趣。 Firefox 认为我在市中心,但 Chromium 将点放在我的房子上。从那篇文章中,我了解到它使用的 wifi 网络数据是从使用 Android 手机的人那里收集的,而不是从街车上收集的。很有趣。
      【解决方案5】:

      在 Firefox 中打开一个新选项卡并输入地址 about:config。跳过警告消息并在过滤器框中输入geo.wifi.uri,您现在正在查看 Firefox 用于确定您的位置的 Web 服务。

      【讨论】:

        猜你喜欢
        • 2011-02-08
        • 2013-06-25
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多