4

这是一个通用的编程问题,尽管我更喜欢Node.js的解决方案。是否有用于检索无线接入点列表及其相关数据(SSID、MAC 地址等)的 JavaScript 或 .NET API?我使用TamperData来查看当您与 Firefox 共享您的位置并获得此请求 URL 时会发生什么:

https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&sensor=true&wifi=mac:b8-c7-5d-07-6e-cf|ssid:TV2 Network|ss:-58&wifi=mac:00-13-10-8d-a7-32|ssid:LUBIN|ss:-61&wifi=mac:62-4c-fe-9c-08-18|ssid:airportthru|ss:-73&wifi=mac:00-24-93-0c-49-e0|ssid:Custom Gifts Memphis|ss:-87&wifi=mac:98-fc-11-69-35-46|ssid:linksys|ss:-87&wifi=mac:00-0f-cc-6d-ba-ac|ssid:3333|ss:-88&wifi=mac:40-b7-f3-5b-2c-60|ssid:ATT456|ss:-88&wifi=mac:00-c0-02-7d-5f-4e|ssid:iHub_0060350392e0|ss:-89&wifi=mac:00-24-b2-d5-df-9a|ssid:Memphis CPA|ss:-89&wifi=mac:06-02-6f-c3-06-27|ssid:3333|ss:-89&wifi=mac:00-27-0d-55-c3-20|ssid:custard|ss:-90&wifi=mac:a2-a1-15-0d-a8-68|ssid:SETUP|ss:-90&wifi=mac:00-0f-cc-76-5b-2c|ssid:3545 2340|ss:-92&wifi=mac:c0-3f-0e-6e-ac-34|ssid:patricia|ss:-92

...它在执行时返回一个 JSON 对象,它正是我正在寻找的:latitude and longitude coordinates。此示例的对象是:

{ "accuracy" : 49.0, "location" : { "lat" : 35.06993630, "lng" : -89.88568730 }, "status" : "OK" }

好奇:这里的准确性如何表示?我相当肯定这不是一个百分比,因为列出的访问点较少的其他请求会返回一个更高的整数。例如,当删除除第一个以外的所有 WAP 时,我得到的准确度为43000.0.

我一直在研究Node版本的prey与类似的 Google 服务交互的方式,它遵循传递 WAP 列表及其信息的相同方式。我正在尝试提取他们完成此任务的代码位,但我什至无法让项目正常运行。如果有人有任何信息,我将不胜感激,因为我有一个利用这种技术的精彩项目。谢谢!

4

2 回答 2

5

这实际上只能通过 Java 小程序或主机上的应用程序来实现。Chrome 和其他浏览器通过在用户计算机上安装应用程序来实现这一点。此应用程序通过 Https 请求安全地转发数据,并将您的 mac id 和 ssid 传递给 Google。在这里,Google 会回复您对您所在位置的最佳猜测。

于 2013-07-06T16:11:12.910 回答
1

node_wifi_location npm 包从本地机器的无线网卡检索可用无线接入点的列表,并可选择将它们传递给 Google 位置 API 以检索机器的位置。它依赖于操作系统的 wifi 命令行实用程序,因为每个平台都有自己的 API 用于访问 wifi 硬件。在任何浏览器中都没有用于检索接入点列表的 JavaScript API,只有一个用于检索位置的 API(HTML5 地理定位 API)。

var wifiLocation = require('wifi_location');

wifiLocation.wifiTowers(function (err, accessPoints) {
    // accessPoints contains an array of access point objects
    // with ssid, mac_address, signal_strength keys 
});

wifiLocation.location(function (err, location) {
    // location contains the location object from the Google Maps API
});
于 2013-07-01T17:57:45.823 回答