東工大ポータル (Tokyo Tech Portal) にログインするときのマトリクス認証をブックマークレットで自動化してみました。なお、Titech Portal Login という Chrome プラグインがあるので、こちらを利用する方が目的は簡単に達成できると思います。
JavaScript で開発する
ブラウザーに付属する Developer Tools のコンソールなどで試しながら開発していきました。汎用的な実装というよりは直接的な実装を目指しました。ログイン画面の仕様変更にはコード修正で対処する方針です。
let matrix = [
["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1", "I1", "J1"],
["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2", "I2", "J2"],
["A3", "B3", "C3", "D3", "E3", "F3", "G3", "H3", "I3", "J3"],
["A4", "B4", "C4", "D4", "E4", "F4", "G4", "H4", "I4", "J4"],
["A5", "B5", "C5", "D5", "E5", "F5", "G5", "H5", "I5", "J5"],
["A6", "B6", "C6", "D6", "E6", "F6", "G6", "H6", "I6", "J6"],
["A7", "B7", "C7", "D7", "E7", "F7", "G7", "H7", "I7", "J7"]
];
let field = (index) => document.getElementsByName("message" + (index + 3))[0];
let position = (index) => document.getElementsByTagName("td")[index + 4].textContent.trim();
let row = (position) => position[3] - 1;
let column = (position) => position[1].charCodeAt() - "A".charCodeAt();
field(0).value = matrix[row(position(0))][column(position(0))];
field(1).value = matrix[row(position(1))][column(position(1))];
field(2).value = matrix[row(position(2))][column(position(2))];
document.forms["login"].submit();
ブックマークレットに変換する
JavaScript で開発したコードをブックマークレットとして動作するように変換します。
javascript:(function(){let matrix=[["A1","B1","C1","D1","E1","F1","G1","H1","I1","J1"],["A2","B2","C2","D2","E2","F2","G2","H2","I2","J2"],["A3","B3","C3","D3","E3","F3","G3","H3","I3","J3"],["A4","B4","C4","D4","E4","F4","G4","H4","I4","J4"],["A5","B5","C5","D5","E5","F5","G5","H5","I5","J5"],["A6","B6","C6","D6","E6","F6","G6","H6","I6","J6"],["A7","B7","C7","D7","E7","F7","G7","H7","I7","J7"]];let field=(index)=>document.getElementsByName("message"+(index+3))[0];let position=(index)=>document.getElementsByTagName("td")[index+4].textContent.trim();let row=(position)=>position[3]-1;let column=(position)=>position[1].charCodeAt()-"A".charCodeAt();field(0).value=matrix[row(position(0))][column(position(0))];field(1).value=matrix[row(position(1))][column(position(1))];field(2).value=matrix[row(position(2))][column(position(2))];document.forms["login"].submit();})();
こちらのブックマークレット Portal Matrix をブックマークバーにドラッグ&ドロップして追加します。
次節の手順でマトリクスコード表を置換する前に、東工大ポータルのマトリクス認証画面でこのブックマークレットをクリックしてみましょう。問題なく動作していれば、コードを入力する各フィールドに2文字入力され、コードが一致しないため認証に失敗するはずです。クリックして何も変化せず認証に失敗しない場合、ご利用のブラウザーでこのブックマークレットが動作しない可能性があります。
マトリクスコード表を置換して使用する
ブックマークバーに追加された Portal Matrix を編集し、URL に含まれる A1 から J7 までをそれぞれマトリクスコード表で該当するコードに置換します。ブックマークレットのコードを破壊してしまうと動作しなくなってしまうので、慎重に置換するようにしてください。1行ごとに動作確認したり、ブックマークをコピーしてバックアップしたりすることで大きな手戻りは防げるかもしれません。
置換できたら東工大ポータルのマトリクス認証画面でこのブックマークレットをクリックするだけで自動的にマトリクス認証できるようになります。
なお、マトリクス認証画面の前に Account と Password による認証画面がありますが、こちらの認証はブラウザーの機能で自動化しましょう。
本稿では、東工大ポータルにログインするときのマトリクス認証を自動化するブックマークレットについて説明しました。誰かの役に立つ気はしないのですが、この記事を読んでくださった方に感謝です。