auのWiFiにログインする。
au のSSIDのWifiは、いくつかの手順を経て、PCからログイン出来るようになる。
- au が用意する専用のURLで、wifi のIDを入手する( 要 au id )
- au WiFi が飛んでるエリアにゆき、接続する
- au WiFi で接続後、リダイレクトされることを確認
- ログインするスクリプトを実行
au WiFi のログインIDを取得数r
au WiFi には、専用のログインIDが別に必要で、これはau id でログインして取得する
実際には、このURLにアクセスしてID/PWを取得する
https://auwifi-signup.auone.jp/su2/?{"mac_addrs":["***大文字MACアドレス***"],"manufacturer":"Windows","model":"7","request_type":"0"}
詳しくは→公衆Wifiの認証情報について - eggshell blue
au WiFi のSSIDに接続する
au_Wi-Fi のSSIDに接続するためのWPAキーは 接続ツールのplist に書いてある。
PL_PATH="/Applications/au Wi-Fi接続ツール.app/Contents/Resources/SSID.plist" XPATH_EXP="//array/dict[./string[text()='au_Wi-Fi']]/string[position() < 3 ]" plutil -convert xml1 $PL_PATH -r -o - | xpath $XPATH_EXP Found 2 nodes: -- NODE -- <string>7IkINyKIQB9mL20f</string>-- NODE -- <string>au_Wi-Fi</string>
Windowsでも同じように書いてあるんじゃないでしょうか。
au-WIFIのログインをする
ログイン先に、データをPOSTする。
require 'mechanize' def auWifi(id,pw) m = Mechanize.new m.get 'http://mixi.jp' ## parse host a = m.page.u ri.to_s b = m.page.uri.path c = m.page.uri.query ## POST to /smartlogin d = a.gsub(b+"?"+c ,"") x = d+"/smartlogin" m.post x, {UserName: id ,Password: pw } body = m.page.body.toutf8 match = body.match(/(\/login\?cid=[^&]+&username=[0-9a-zA-Z]+)/) raise unless match y = d + match[1] m.get y print m.page.body.toutf8 end auWifi( "xxxxxx@au", "xxxxxxx" )
これで無事に、au にログイン出来るようになった。