После запроса и получения необычной маленькой программы, которая позволяет мне превращать любой MAC-адрес 802.11 Ethernet в геолокацию с помощью API геолокации Google, я с сожалением узнаю, что Google считает, что я всегда в Монтерей, Калифорния, когда я использую его с одного компьютера, и в Ньюпорт-Бич, когда я использую его с другого.
Вот пересмотренная версия программы, которую я использую:
<?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:E0:6F:90:A1:71
Geolocate 00:E0:6F:90:A1:71:
W Franklin St
Monterey, California 93940
Lat/Lon: 36.600237,-121.894676
% php geolocate.php 00:D0:25:8A:79:14
Geolocate 00:D0:25:8A:79:14:
W Franklin St
Monterey, California 93940
Lat/Lon: 36.600237,-121.894676
% php geolocate.php 00-D0-25-8A-79-14
Geolocate 00-D0-25-8A-79-14:
W Franklin St
Monterey, California 93940
Lat/Lon: 36.600237,-121.894676
%
Вот на другой машине:
$ 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
Нет смысла, что каждый адрес Ethernet, который я пытаюсь найти, находится на улице W Franklin в Монтерее. По умолчанию это связано с моим IP-адресом?