UserScriptで自動ログオン
うちの大学にはWi-Fi アクセスポイントが張り巡らされていて、キャンパス内ならどこでもWi-Fi に繋ぐことができる。難点は、ブラウザから追加ログオンが必要なこと。PC が一瞬スリープ状態になっただけでも、ネットワークのコネクションが切れて再度追加ログオンをしなければならない。
非常に面倒なので、自動ログオンのスクリプトを書いて、ブラウザで勝手にログオンしてくれるようにする。 今回書くのはjsのUserScript(拡張子がuser.js)。
今回はGoogle Chrome の拡張機能としてUserScriptを動かす。(このときはChromeのバージョン 38.0.2125.101でやりました)
こんなコードを書いた。
// ==UserScript== // @name autoAgwlan // @namespace ##### // @description This script provides auto login to agwlan w/ Google Chrome. This shall be installed through the Google Chrome's Extensions. // @include https://agwlan.aim.aoyama.ac.jp/* // @exclude https://agwlan.aim.aoyama.ac.jp/login.html // ==/UserScript== //user's name and password here username = '########'; password = '########'; function apendScript(script){ var element = document.createElement('script'); element.id = 'autoAgwlan'; element.innerHTML = script; if(document.getElementById('autoAgwlan') == null){ var objBody = document.getElementsByTagName("body").item(0); objBody.appendChild(element); } } apendScript( 'document.forms[0].elements[3].value = ' + username + ';'+ 'document.forms[0].elements[4].value = ' + password + ';'+ 'submitAction();' );
// ==UserScript== // @name autoAgwlan // @namespace http://rcl.it.aoyama.ac.jp/yuuki/ // @description This script provides auto login to agwlan w/ Google Chrome. This shall be installed through the Google Chrome's Extensions. // @include https://agwlan.aim.aoyama.ac.jp/* // @exclude https://agwlan.aim.aoyama.ac.jp/login.html // ==/UserScript== の部分は実は単なるコメントではない。 @name : このスクリプトの名前 @namespace : 名前空間。一般的には作成者のURL @description : スクリプトの説明 @include : このスクリプトを実行するページ @exclude : このスクリプトを実行しないページ
Chromeだと@includeに該当するページに飛ぶと、なぜか2回ページがロードされるので、2回スクリプトが実行されてしまう。それがちょっと面倒なので、直接追加ログオンページのhtmlにスクリプトを埋め込むようなスクリプトにした。なんか動作がウイルスみたいだけど、これが一番うまくいった。