这是一个常见的编程问题,虽然我更喜欢 Node.js -geared解决方案。是否有用于检索无线接入点列表及其相关数据(SSID,MAC地址等)的JavaScript或.NET API?我使用 TamperData 查看与Firefox共享位置时发生的情况,并获得此请求网址:
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对象,正是我正在寻找的东西:纬度和经度坐标。此示例的对象是:
{
"accuracy" : 49.0,
"location" : {
"lat" : 35.06993630,
"lng" : -89.88568730
},
"status" : "OK"
}
CURIOUS:这里的准确度如何表示?我相当肯定它不是百分比,因为列出的访问点较少的其他请求返回更高的整数。例如,当删除除第一个列出的WAP之外的每个WAP时,我得到43000.0
的准确度。
我一直在研究prey的节点版本与类似Google服务的互动方式,它遵循传递WAP列表及其信息的相同方式。我正在尝试提取完成此任务的代码,但我甚至无法让项目正常运行。如果有人有任何信息,我会非常感激,因为我有一个很好的项目,利用这种技术。谢谢!
答案 0 :(得分:5)
这实际上只能通过Java applet或主机上的应用程序来实现。 Chrome和其他浏览器通过在用户计算机上安装应用程序来实现此目的。此应用程序通过Https请求安全地转发数据,并将您的mac id和ssid传递给Google。 Google在这里回复了对您所在位置的最佳猜测。
答案 1 :(得分:1)
node_wifi_location npm包从本地计算机的无线网卡中检索可用无线接入点列表,并可选择将它们传递到Google位置API以检索计算机的位置。它依赖于操作系统的wifi命令行实用程序,因为每个平台都有自己的API来访问wifi硬件。任何浏览器中都没有用于检索访问点列表的JavaScript API,只有用于检索位置的API(HTML5 geolocation 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
});