スポンサードリンク
Categories: ネット

Google位置情報サービスから住所を取得するスクリプトを改造してみた


photo credit: tobyct

高木先生のMACアドレスと位置情報サービスに関する記事 の注釈6にある、Google位置情報サービスからMACアドレスを指定して住所を抜き出すスクリプトが、上手く動かないので改造してみた。

うまく動かない理由は高木先生も触れられている通り、Googleの仕様変更により、2つ以上のMACアドレスを与えなければ、住所データを返してくれなくなったため。元々のスクリプトは1つしかMACアドレスを送れない仕様となっていたので、それを2つ送れるように変更し、返ってくる住所情報が日本語になるようにしてみた。

#!/bin/bash
 
if [ $# != 2 ]; then
echo "# Google Gears WiFi Geolocation API query by ShadowHat=esYou"
echo "# Shadow@SquatThis.net"
echo "#"
echo "# Use: $0 MAC1 MAC2"
echo "# $0 00-C0-26-A9-42-F7 00-C0-26-A9-42-F8"
echo "#"
exit;
fi;
 
curl http://www.google.com/loc/json -H "Pragma: no-cache" -H "Cache-control: no-cache" -d "{ \"version\": \"1.1.0\", \"host\":
\"maps.google.com\", \"request_address\": true, \"address_language\":
\"ja_JP\", \"wifi_towers\": [ { \"mac_address\": \"$1\",
\"signal_strength\": 8, \"age\": 0 },
{ \"mac_address\": \"$2\", \"signal_strength\": 8, \"age\": 0 }  ] }"
echo ""
./スクリプト名 MACアドレス1 MACアドレス2

とすれば、データがあればGoogleから住所情報が返ってくる。高木先生が公開されている、FONのMACアドレスで動作確認したところ、同じ情報が返ってきた。

もっとたくさん同時に送るようにするには、

if [ $# != 2 ]; then

の数字を増やして、

{ \"mac_address\": \"$1\", \"signal_strength\": 8, \"age\": 0 },

の部分を追加していけばいい。例えば

\"wifi_towers\": [ { \"mac_address\": \"$1\",
\"signal_strength\": 8, \"age\": 0 },
{ \"mac_address\": \"$2\", \"signal_strength\": 8, \"age\": 0 }.
{ \"mac_address\": \"$3\", \"signal_strength\": 8, \"age\": 0 },
{ \"mac_address\": \"$4\", \"signal_strength\": 8, \"age\": 0 }  ] }"

みたいな感じで。この例だと4つまで同時に送れるようになる。

スポンサードリンク
GUILZ.ORG

Share
Published by
GUILZ.ORG
スポンサードリンク