ザキンコのブログ

ザキンコの日記のはてなブログ版です。

公衆無線LAN(Wi2)のWEB認証の自動化に挑戦

参考サイト
「公衆無線LANサービスの自動ログインスクリプト」 - http://d.hatena.ne.jp/RobinEgg/20121104/p1
Mac OS X で自動的に公衆無線LANへログインするツール (wifi_login) を作った」 - http://www.machu.jp/diary/20121001.html#p01
au Wi-Fi SPOTLinuxから接続できるようにしてみた」 - http://d.hatena.ne.jp/tmatsuu/20120320/1332262068

まだ作成途中だけど、rubyのhttpclientを使ってWISPrという簡素なプロトコルに従って認証サーバーとやりとりしたらログインできたのでメモ。

普通は公衆無線LANサービスのアクセスポイントに無線を接続した後に、ブラウザを立ち上げて適当なページにアクセスすれば認証ページ飛ばされるので、そこで認証をすれば自由にネットを使えるようになるが、この作業はバックグラウンドで自動的にやっておいて欲しいと思ったのでいろいろ調べていました。

手動でWi2のアクセスポイント(Wi2_premium等)に接続してIP貰った後、スクリプトで適当なページにアクセスするとhttpsの認証ページを返してくるから、その中の「WISPAccessGatewayParam」タグ内の「LoginURL」に対して認証データをPOSTで投げる(仕様書のwispr_v10.pdfの通りに)と認証されて、無事にネットを使えるようになりました。本当にこれだけで良いなら非常に簡単ですね。
一つはまったのが、仕様書のwispr_v10.pdfのミス(おそらく)で、最初のアクセスでは「xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"」ときちんと返してくるのに、次の処理から「xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance」とダブルコーテーションなしで返してくることです。これは仕様書のサンプル通りなのですが、これが原因でREXMLがエラーを吐きます。
それでもWi2の認証はたぶん良心的な方かもしれない。
完成度を上げたらrubyスクリプトを公開するかも。