Geolocation 为什么谷歌';s地理定位API认为我';我总是在加利福尼亚州的蒙特利?
在一个奇特的小程序允许我使用谷歌的地理定位API将任何802.11以太网MAC地址转换为地理定位后,我很难过地发现,当我在一台计算机上使用它时,谷歌认为我总是在加利福尼亚州蒙特利,当我在另一台计算机上使用它时,我总是在纽波特海滩 下面是我正在使用的程序的修订版本:Geolocation 为什么谷歌';s地理定位API认为我';我总是在加利福尼亚州的蒙特利?,geolocation,Geolocation,在一个奇特的小程序允许我使用谷歌的地理定位API将任何802.11以太网MAC地址转换为地理定位后,我很难过地发现,当我在一台计算机上使用它时,谷歌认为我总是在加利福尼亚州蒙特利,当我在另一台计算机上使用它时,我总是在纽波特海滩 下面是我正在使用的程序的修订版本: <?php $mac = $_SERVER['argv'][1]; $postData =
<?php
$mac = $_SERVER['argv'][1];
$postData = '{
"version": "1.1.0",
"request_address":"true",
"wifi_towers": [{
"mac_address": "' . $mac . '"
}]
}';
$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)
);
$response = json_decode($response, true);
$loc = $response['location'];
$addr = $loc['address'];
echo "Geolocate $mac:\n";
echo $addr['street'],"\n";
echo $addr['city'],", ",$addr['region']," ",$addr['postal_code'],"\n";
echo "Lat/Lon: ",$loc['latitude'],",",$loc['longitude'],"\n";
这是另一台机器上的:
$ php geolocate.php 00:D0:25:8A:79:14
Geolocate 00:D0:25:8A:79:14:
Via Lido
Newport Beach, California 92663
Lat/Lon: 33.61891,-117.928946
$ php geolocate.php 00:E0:6F:90:A1:71
Geolocate 00:E0:6F:90:A1:71:
Via Lido
Newport Beach, California 92663
Lat/Lon: 33.61891,-117.928946
我尝试的每个以太网地址都在蒙特利的W富兰克林街,这是毫无意义的。它是否默认为与我的IP地址相关的内容?这是wifi定位,当不使用wifi连接时,它远远不准确。在这里,你的脚本把我的位置放在法国巴黎的中部,我用的机器位于巴黎东部,用DSL连接。
请参见根据您提到的问题,谷歌地理定位API的工作原理是查找无线接入点的MAC地址,而不是您机器的MAC地址。听起来好像只是在查询他们收集的AP MAC地址和相应坐标的数据库。可能是这样。您是否尝试过更改(或欺骗)您的MAC地址?我的MAC地址不是通过TCP连接发送的,因此这不会起任何作用。是的,我知道这不是针对我的MAC地址。我用的是我的Wi-Fi路由器的MAC地址。如果你认为这个位置有一个大的错误,比如+/-8Km的话,对我来说。所以我的程序没有问题,只是我的数据。我使用的MAC地址实际上是wifi地址。
$ php geolocate.php 00:D0:25:8A:79:14
Geolocate 00:D0:25:8A:79:14:
Via Lido
Newport Beach, California 92663
Lat/Lon: 33.61891,-117.928946
$ php geolocate.php 00:E0:6F:90:A1:71
Geolocate 00:E0:6F:90:A1:71:
Via Lido
Newport Beach, California 92663
Lat/Lon: 33.61891,-117.928946