【问题标题】:Geolocating 802.11 access points by MAC address using Google Geolocation API使用 Google Geolocation API 通过 MAC 地址对 802.11 接入点进行地理定位
【发布时间】:2011-01-10 03:14:21
【问题描述】:

现在大多数浏览器都内置了对 Google Geolocation API 的支持。他们通过向 Google 发送附近 802.11 接入点(其信标被您的计算机捕获的那些)的 MAC 地址来实现这一点。

我从不同位置捕获了大量 802.11 数据包。我正在寻找 802.11 接入点的地理定位。假设我们只有他们的 mac 地址。这应该可以通过使用 Google Geolocation API 来实现。

迄今为止我发现可能对此有所帮助的来源包括:

第一个可能是最好的选择。问题是,我不确定如何使用那里的示例并实际创建一个程序,让我通过管道输入 MAC 地址并输出纬度/经度对。我也不确定如何从 Unix/MacOS 命令行运行 JavaScript。

我知道这有很多问题要问,但是有人知道我应该从哪里开始吗?

【问题讨论】:

    标签: javascript geolocation


    【解决方案1】:
    <?php
    
    $mac = $_SERVER['argv'][1];
    
    
    $postData = '{
        "version": "1.1.0", 
        "wifi_towers": [{
            "mac_address": "' . $mac . '", 
            "ssid": "0", 
            "signal_strength":-72
        }]
    }';
    
    $opts = array(
      'http'=>array(
        'method' => "POST",
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postData
      )
    );
    
    
    $response = file_get_contents(
        'http://www.google.com/loc/json', 
        false, 
        stream_context_create($opts)
    );
    
    $loc = json_decode($response, true);
    
    echo $loc['location']['latitude'];
    echo ',';
    echo $loc['location']['longitude'];
    

    命令行用法:

    php geo.php "mac addy here"
    

    【讨论】:

    • 我相信谷歌定位服务也支持 https,物有所值。
    • 现在我真的很困惑。我已经尝试了许多以太网地址,它们都回来了:{'city': u'Monterey', 'zip': u'93940', 'country': u'United States', 'region' : u'California', 'long': -121.894676, 'street': u'W Franklin St', 'lat': 36.600237, 'accuracy': 43000.0} 这对我来说毫无意义。
    • 查看准确度值,我认为谷歌正试图优雅地失败。他们可能不知道该 mac 地址的位置,而是使用您的 ip 地址(这可以解释精度值差的原因)
    • 我后来得知 Google 服务需要多个 MAC 地址。
    猜你喜欢
    • 2018-07-09
    • 2012-06-13
    • 2017-03-13
    • 2017-06-17
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2012-01-02
    相关资源
    最近更新 更多