Как работает HTML5 GeoLocation?

Я знаю, что обозреватель разделяет мой IP-адрес и информацию о ближайших беспроводных сетях, чтобы определить мое местоположение, но какая информация знает о ближайших Wi-Fi-сетях?

Например, где я живу, нет общедоступных беспроводных сетей, и из моего дома я могу видеть около 5 частных сетей, но мое местоположение определяется в пределах 20 метров. Когда поблизости нет открытых сетей, как Google определяет мое местоположение? Единственный способ, которым я могу думать, это то, что Google сопоставил местоположения всех беспроводных сетей, когда они отображали улицы для просмотра улиц.

Я искал в Интернете, но все не могу найти никаких конкретных деталей.

Ответ 1

Данные, отправленные 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 - это MAC-адрес WiFi node.
  • signal_strength - это сила тока, измеренная в дБм.
  • age - это количество миллисекунд с момента обнаружения WiFi node.
  • SSID - это имя или ESSID для Wi-Fi node.

Данные привязанных к привязке Wi-Fi, используемые для геокодирования вашего запроса, были собраны, когда Google катался по фотографиям для StreetView.

Важно отметить, что, тем не менее, это то, как API геолокации HTML5 внедряется в Firefox с помощью Google Geolocation Services. Это реализация, а не спецификация. Если ваше устройство имеет встроенный GPS, вероятно, желательно, чтобы ваша реализация HTML5 запрашивала GPS напрямую, вместо использования службы геолокации.

Даже firefox реализует эту функцию по-разному в Windows и Linux. Используя текущий Firefox в Windows, сведения о всех видимых узлах Wi-Fi отправляются в Google. Используя текущий Firefox в Linux, отправляется только информация о подключенном в настоящий момент WiFi node из-за зависимости от libiw для точки доступа данных.

Как заметил еще один ответчик, Safari использует службу Skyhook Wireless, которая делает то же самое, что и службы геолокации Google.

Ответ 2

Данные собираются Skyhook Wireless (Wikipedia), и они не делают различия между государственными и частными беспроводными точками - они регистрируют местоположения всех из них. Я бы не удивился, если бы в Google Street View были записаны данные о местоположении для точек доступа.