方針
楽天証券にログインすると追加認証としてメールに認証コードが送られ、メール本文にある認証コードをWebページ上で正しく選択するとログインできる仕組みに変更された。認証コードは画像でメール本文に表示された画像2つをWebページで正しい順番で選択することでログインできる。
当初はメール本文にある画像を取得してWebページに表示されている画像と比較、ほぼ一致したらそれを選択する、という方法で実装しようとしていた。実装を進めているとメール本文にも画像名称がテキストで書いてあり、Webページ上にもalt属性として記載があったので、テキストできちんと比較できることがわかった。
認証の流れは下記となる。
- 楽天証券にログインするとメールで認証コードが送られる
- メール本文を参照して認証コードを取得
- メールから取得した認証コードをWebページ上で選択する
ソースコード
クラス中に実装しているメソッドの抜粋が上記。下記の流れになっている。
- 画面に表示されたメール送信日時を取得する
- 追加認証メールを取得する
- メール本文に記載されている認証コード(どの画像かの文字列)を取得する
- メール本文から取得した認証コードと同じ画像をクリックする
- 認証するボタンをクリックする
GmailのAPIを利用して楽天証券から送られた追加認証メールを取得するロジックは上記。これもクラス中に実装しているメソッドの抜粋となっている。
その他
- 3回連続で追加認証に失敗すると口座がロックされるため、この自動操作で追加認証に失敗した場合はアラートを出す仕組みがあったほうが良い。
