Posted at

【小ネタ】Web認証の自動化【Linux編】

More than 3 years have passed since last update.

カフェとか勉強会会場とかのWiFi等のWeb認証で毎回ブラウザでID・パスワードの入力とかAcceptボタンのクリックとかが面倒なので自動化しようというお話です。古いネタなんですが、周りに割と知らない人がいたのと、ググるとツールを使う方法とかが出てきちゃったのでスクリプトのみで行う方法を一応書いておこうと思います。

NetworkManagerの有無によって変わります。


NetworkManager有りの場合

以下のようなファイルを作成します。


/etc/NetworkManager/dispatcher.d/99-local.sh

#!/bin/bash

if [ "$CONNECTION_ID" = "example-wifi" ]; then
curl http://example.com/login -d user=example-user -d password=example-password -d cmd=authenticate
fi


CONNECTION_IDはwifiのSSIDを入れます。

curlのURLとパラメータはWeb認証で必要となるものに置き換えて貰えればと思います。

これらは事前に一度はログインしてパケットをキャプチャするなどして調べておく必要があります。

例えばdocomo WiFiならcurl https://wlan.m-zone.jp/wlan/portal.jsp -d user=username-spmode@docomo -d password=userpassword -d mode=activateとかですね。

そして実行権限を付与すればOKです。

sudo chmod +x !$

これで接続時に自動的に上記のスクリプトが実行されて繋がります。


NetworkManager無しの場合

/etc/sysconfig/network-scripts/ifup-post

から

/sbin/ifup-local

が呼ばれるので、そこに処理を書きます。

デフォルトだとファイルが存在しないので、ファイル作成後に実行権限を付与します。

こっちは数年前に試したきりです。

現在手元にはNetworkManagerがオンのマシンしかないので、実は動かないとかあったらコメントください。

以上。超小ネタでした。