• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

株式会社ハイファイブクリエイト

東京都を拠点にWebサイト制作やシステム構築、WordPress保守管理やウェブコンサルティングを提供。

  • SERVICE
  • ABOUT
  • WORKS
  • BLOG
  • NEWS
  • CONTACT
ホーム / ブログ / TIPS / SeleniumでWordPressのログイン時に2段階認証がある場合の手動対応の方法

SeleniumでWordPressのログイン時に2段階認証がある場合の手動対応の方法

池田祐太郎 | 2021年9月8日 公開 コメントを書く

Webブラウザを操作したり自動化するためのフレームワーク、Selenium。WordPressの管理画面上での操作を定期的に行っているのですが、これを自動化するためにSelenium、Pythonを使って処理ができそうなので勉強も兼ねてプログラムを書いてみています。

今回はPythonでSeleniumを利用してWordPressにログインする際に、二段階認証が有効になっている場合の方法をご紹介します。

目次

  • 1 二段階認証は自動化のハードルが高い
  • 2 二段階認証は手動で対応し、成功後の動作から自動化する
  • 3 ログインが成功したかどうかを判別し、成功していたら処理を再開する
    • 3.1 URLを確認しログイン成功したかどうかをチェック
  • 4 WordPress内の処理を自動化しラクをする

二段階認証は自動化のハードルが高い

WordPressの管理画面にログインする場合、以下のフローとなります。

  • ログイン画面を開く
  • ユーザー名(またはEメール)とパスワードと入力
  • 入力後、送信ボタンをクリック
  • ログイン成功

これをPythonで書いてあげれば良くて、この方法は至るところで紹介されており特に難しくありません。

問題は二段階認証です。WordPressのセキュリティ対策として二段階認証は特別なものではなく対応しているところも多いです。二段階認証をPythonでどうやって突破できるか色々調べました。

Python+Seleniumで2段階認証(6桁のパスコード)を突破する全手順 | たぬハック

MacでGoogleの2段階認証(ワンタイムパスワード)をコマンド一発で取得する方法 – chat-blog

上記で紹介されている「oath-toolkit」ライブラリをインストールすることで6桁のパスワードを生成してくれるため、二段階認証側に追加してあげればいけそうな気がするのですが、WordPress側の二段階認証をどうやって生成しているかにもよって方法が変わってくるため、そのあたりのハードルがちょっと高そうでした。

二段階認証は手動で対応し、成功後の動作から自動化する

ならば、二段階認証は手動で対応することで一気にハードルを下げます。目的は二段階認証の自動化ではなく、動作のオートメーション化なので。

Pythonの場合、処理を止めておくには sleep で指定の時間待つことが可能です。例えば30秒など設定しておけば、その間に二段階認証の6桁のパスワードを確認し、入力して送信し、ログイン成功までを指定した時間で行えばその後の処理はうまく動いてくれそうです。

ですが、時間がかかりすぎて処理開始まで時間がかかったり、逆にもたもたして指定時間をすぎる可能性もあります。なのであまりいい方法とは言えません。

そこで、ログイン成功したかをチェックするプログラムを書きます。

ログインが成功したかどうかを判別し、成功していたら処理を再開する

色々な方法があるかと思いますが、今回は以下の方法を採用しました。

  • ログイン時のURLを取得しておく
  • ログイン後のURLに変更したかを2秒ごとに確認
  • ログイン後のURLに変わっていたら処理を再開

ようはログイン画面のURLとログイン後のURLが別なので、そこだけ確認しておくようにし、変わっていたら処理を続行する、というような単純な繰り返し処理です。

#ライブラリのimportは省略

# ブラウザを開く
browser = webdriver.Chrome()

# 管理画面にアクセス
browser.get("https://ドメイン/wp-login.php") # 管理画面のURLを入力します
sleep(3) # 3秒待つ

# ログイン処理
username = 'ユーザー名' # ここにユーザー名を入力します
password = 'パスワード' # ここにパスワードを入力します
browser.find_element_by_css_selector("#user_login").send_keys(username) # ユーザー名をフォームに入力
browser.find_element_by_xpath("//*[@id='user_pass']").send_keys(password) # パスワードをフォームに入力
browser.find_element_by_css_selector("#wp-submit").click() # 送信をクリック
sleep(3) # 3秒待つ

# 2段階認証は手動対応
url = browser.current_url # 現在のURLを取得
while url == 'https://ドメイン/wp-login.php': # URLを確認しログイン成功したかどうかをチェック
	sleep(2) # 2秒ごとに実施
	url = browser.current_url # 現在のURLを取得(変わっていたらループを抜ける)

# この後にログイン後の処理を書く

URLを確認しログイン成功したかどうかをチェック

「ブラウザを開く」「管理画面にアクセス」「ログイン処理」といった部分はコメントアウトで書いてある処理です。ライブラリのインポートも含めてここでは割愛します。

「2段階認証は手動対応」部分ですが、非常にシンプルなので説明するまでもないかもしれませんが、一応念の為。

  • current_url を使って現在のURLを取得しておきます。現在のURLとは管理画面のログインURLなので、 https://ドメイン/wp-login.php のようなURLになります。
  • while 文の繰り返し処理では、取得した現在のURLと一致するかどうかを判別し、一致したら続くブロック内の処理を実行します。
  • 現在のURLを取得して代入するというのを sleep で2秒ごとに繰り返します。ログインが成功しているとダッシュボードに画面遷移してURLが変わるので、 url にダッシュボードのURLが代入されればループから抜けます。

以上で二段階認証は手動で入力し、その前後の処理を自動化することができました。
ちなみに、管理画面の特定のページに最初から遷移しておきたい場合は、 browser.get("https://ドメイン/wp-login.php") の時点でログイン後に遷移しておきたいページのURLを入力すれば、WordPress側で自動でリダイレクト処理を行ってくれます。

WordPress内の処理を自動化しラクをする

きっと二段階認証を自動で突破するエレガントな方法があるかと思いますが、とりあえずの方法として手動での対応方法をご紹介しました。

定期的に管理画面にアクセスして決まった処理をしている、という場合はPythonとSeleniumを使って処理を自動で行うことができる可能性があります。

数分の作業だからわざわざコードを書かなくても……とも思いましたが、今までPythonは書いたことがなかったので、自分の勉強のために取り組んでみています。

管理画面からデータをエクスポートし、そのエクスポートしたデータを加工する、ということを定期的に行うためのコードを書いています。結果、自動化までに既に数時間使って試行錯誤していますが……後もう少しです。

これが出来上がったらまた紹介したいと思います。

メールコンサルティング
WordPress保守管理サービス

Filed Under: TIPS 関連タグ:Python, Selenium

池田祐太郎

WordPress の構築・保守を10年以上にわたって手掛けており、主に小〜中規模のコーポレートサイト・ECサイト・ブランドサイト等の企画・開発・保守・コンサルティングなどを行ってきました。2012年にハイファイブクリエイトを創業し、現在は WordPress の保守やコンサルティング、ディレクションや開発業務などを担当しています。 プロフィール詳細

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

I agree to these terms.

この記事と関連する記事

目次生成プラグインの TOC+ が表示されなくなったときの対処法
2023年2月24日
カテゴリー: TIPS
Google Cloud Platform に設置した WordPress の移行において、SSH ログイン時の sudo パスワードを求められるときの回避方法
2023年2月8日
タグ: GCP, サイト引っ越し
カテゴリー: TIPS
メール作業の生産性を向上させる最低限覚えておくべき Gmail のショートカットキー
2023年1月6日
タグ: gmail, google workspace, Mac, Windows, ショートカットキー
カテゴリー: TIPS

人気記事

  1. 同一サーバー上に構築するWordPressのテスト環境の作り方
  2. git pull してもエラーが出てファイルが反映されないときの対処法
  3. サイト制作の要件定義書に普段書いている内容(ダウンロード可)
  4. WordPressの固定ページでタグやカテゴリーを使いたいときはカスタム投稿タイプを検討する
  5. ダウンロードして即使えるサイトマップ(サイト構成図)のテンプレート5点
  6. WordPress において PHP 8.1 に更新していいかどうか検証

最初のサイドバー

WordPress保守管理サポート

Search

最近の投稿

  • WordPress サイトを多言語化するプラグイン5選(自動翻訳サービス除く)
  • ウェブサイトを自動的に多言語対応する各サービスを比較します
  • WooCommerce のバリエーションのある商品を追加して売上向上を図る
  • 目次生成プラグインの TOC+ が表示されなくなったときの対処法
  • ChatGPT の有料版「ChatGPT Plus」を使ってみた

カテゴリー

  • CSS初心者
  • HTML初心者
  • TIPS
  • WooCommerce
  • WordPress
  • エステサロン
  • お知らせ
  • キュレーション
  • サイトマップ
  • システム会社
  • デベロッパーツール入門
  • ブログ
  • ホームページ制作
  • ホームページ制作無料講座
  • メール
  • モバイル
  • 仕事のこと
  • 制作実績
  • 整体院
  • 美容院
  • 雑感

タグ

Android BtoC CMS css elementor git Google+ google workspace Gutenberg HTML iPhone jQuery Mac MAMP php SEO SNS SSL Sublime Text Webサイト高速化 Windows WordPress WordPressカスタマイズ WordPressテーマ WordPress構築調査 WPRocket アクセス解析 アプリ クラウドソーシング サイト引っ越し サブスクリプション サーバー ショートカットキー スマホサイト スマートフォン ツール フルサイト編集 ブログ プラグイン マーケティング リニューアル 保守管理 多言語 最適化 集客するサイト構築

アーカイブ

CONTACT

お問い合わせはこちら

Footer

  • PRIVACY POLICY
  • 情報セキュリティ基本方針
  • 特定商取引法に基づく表示
  • 転載/引用

© 2023 high five create All rights reserved.