SBI証券のメール二段階認証 ログイン完全自動化(Python)【8月9日対応版】

その日は突然やってきた。

2025/8/9(土)以降、リアルタイムフィッシングによる詐欺対策として、デバイス認証による認証手順を、現行の「認証コードをEメールで送信する方式」から、「認証コード入力画面のURLを送信する方式」に変更することをお知らせいたします。

 
 

ユーザーをバカにしとるのか!

 

 

5月に変更したばかりだろ……。何?あれじゃフィッシング詐欺に対処できなかったの?

折角、必死に自動ログイン化対応をしたのにさ……

【追記】SBI証券でデバイス認証(二段階認証)のログイン完全自動化(Python)
証券会社を狙う不正取引問題が続く中で、ログイン時のセキュリティ対策として、多要素認証が「必須化」となってしまった……。これで困るのは自動化システムを作っている個人投資家...

今回の認証の流れは次の通り。

 

40秒の間に、メール開いて メール探して URL開いて IDを入力して認証ボタンを押す

さらに元のブラウザからチェックボタンを押してデバイス登録のボタンを押す

 

 

初見でクリアできた人はブラウザタブの職人www

タイムアタック職人YouTuberも登場しそうwww

 

© 異世界おじさん(一部改変)

 

おじいちゃんの私には初見クリアは無理だった。「えっ?えっ?」ってなったわww

 

自動的に認証を突破させる

残念ながら前回のように汎用的な実装は思いつかない。

 
 

Webメール宛てに届いた本文のURLをクリックして認証番号を入れる

 
 

人間がやることを、単にコンピュータにやらせるだけ……

Webメールサービスにログインが必要なので人によって実装は変わる。

 

私が使っているYahooメールはサービスへのログイン自体が二段階認証が必要だったので、「さくらインターネット」のメールサービスを使った。

GmailやHotmailなどの仕様は分からないが再利用できるかもしれないのでコードを最後に記載。呼び出し方法は次となる。

【main.py】

エラー回避

SBI証券の自動操作スクリプトをPlaywrightで実装中、次のようなエラーが発生した。

playwright._impl._errors.Error: Page.goto: Navigation to “https://site1.sbisec.co.jp/ETGate/?OutSide=on&_ControlID=WPLETsmR001Control&_DataStoreID=DSWPLETsmR001Control&sw_page=Offer&cat1=home&cat2=none&getFlg=on&sw_param1=21&sw_param2=” is interrupted by another navigation to “https://site1.sbisec.co.jp/ETGate/WPLEThmR001Control/DefaultPID/DefaultAID/DSWPLEThmR001Control”
Call log:

Playwrightのpage.gotoは、指定したURLへの移動が完了する前に別の移動が発生すると、Navigation interruptedエラーを投げる。

このエラーを解決するには、サイトのリダイレクトが完了するまで待機し、その後に目的のページに移動させる。

こちらは ページ末のソースコードに追加済。

おわりに

「スマホ認証」ではなくパソコンで完結する世界が残る限り、私は自動化を試みる。

 

 

これぞ、侍魂!

 

 

 

このブログは2000年から書いているため、テキストサイトの名残りを継いでる。

テキストサイトとは、インターネット黎明期の1990年代中期から2000年代前期に日本で流行した、日記などの文章をメインコンテンツにしたサイトのうち、特に情報よりもエンターテイメント性(ネタ)を重んじているウェブサイトである。

 

エンターテイメント性(ネタ)も重んじてるけど「情報」を大切にしてる。

アクセス数は10年前より1/3に。YouTubeが主流になり更に 1/3 に。そしてAI台頭により更に更に1/3に減った。

ソースコード

「sbiauth.py」という名前にして同じフォルダに置いておく。

Webメール処理の部分(mail_operation)は「さくらインターネット」のメールサービスしか利用できない。

だけどAIに「Gmail向けに対応して。不足している情報は取得方法を教えて」等と伝えれば実装できるかもしれない。

タイトルとURLをコピーしました