2010-06-14 108 views
81

我知道浏览器会分享我的IP地址和附近无线网络的详细信息来确定我的位置,但是它知道附近的无线网络有哪些信息?例如,我住的地方没有公共无线网络,从我家可以看到大约5个私人网络,但我的位置在20米之内。由于附近没有开放网络,Google如何确定我的位置?我能想到的唯一方法就是Google在街道上映射街景时映射了所有无线网络的位置。HTML5的GeoLocation究竟是如何工作的?

我已经在网上搜索过,但是我找不到任何具体的细节。

+1

它不是HTML5本身。请参阅http://stackoverflow.com/questions/2248404/about-geolocation-in-html-5/2248467#2248467 – mjv 2010-06-14 21:53:36

回答

6

数据由Skyhook Wireless (Wikipedia)收集,他们不区分公共和私人WiFi点 - 它们记录所有这些点的位置。如果Google街景视图车也记录了接入点的位置数据,我不会感到惊讶。

+3

Google街车会记录无线网络数据 - 目前他们正在几个欧洲和阿帕奇国家进行调查因为它可能违反隐私法律。 – slugster 2010-06-15 00:09:14

68

Firefox发送给Google的数据为所有可见的接入点,公共或私人。对于检测到的每个接入点,它下面的数据发送到https://www.google.com/loc/json

"mac_address": "01-23-45-67-89-ab", 
    "signal_strength": 8, 
    "age": 0, 
    "SSID": "MyAccessPoint" 

其中

  • mac_address是WiFi节点的MAC地址。
  • signal_strength是以dBm为单位测量的当前信号强度。
  • age是自检测到WiFi节点以来的毫秒数。
  • SSID是WiFi节点的名称或ESSID

用于对您的请求进行地理编码的地理参考WiFi数据为collected when Google was driving around taking pictures for StreetView

但需要注意的是,这是HTML5地理定位API如何在Firefox上使用Google的地理定位服务实现的。 这是一个实现,而不是一个规范。如果您的设备具有内置GPS,则可能需要您的HTML5实施直接查询GPS,而不是使用地理定位服务。

即使firefox在Windows和Linux上以不同的方式实现此功能。使用Windows上的当前Firefox,将所有可见WiFi节点的详细信息发送给Google。使用Linux上的当前Firefox,由于接入点数据为reliance on libiw,因此仅发送当前连接的WiFi节点的详细信息。

正如另一位回答者指出的,Safari使用Skyhook Wireless的服务,它的功能与Google的定位服务非常相似。