【Python】SeleniumでGoogleに自動ログインする方法・ログインを保持する方法

Python

Seleniumを使用してGoogleにログインしようとすると、以下のような画面が表示されログインできません。

このブラウザまたはアプリは安全でない可能性があります。

そこで今回は、SeleniumでGoogleアカウントに自動ログインする方法について解説します。

なぜSelenium経由で自動ログインできないのか

はじめに、なぜSelenium経由で自動ログインできないのかをまとめます。理由はどうでもいいからとにかくログインできるようにしたいという方は、2.Seleniumで自動ログインする方法をご参照ください。

なぜSelenium経由で自動ログインできないのかというと、人間による操作だとみなされていないからです。Googleのヘルプにも「人の手でなくソフトウェアで操作されている」場合にはログインが拒否されるとあります。

参考:Googleアカウントヘルプ

どうやって人間かどうかを判断しているのか

では、どうやって人間かどうかを判断しているのかというと、「ユーザープロファイル」をもとに判断しています。

プロファイルというのは、IDやパスワード、拡張機能、その他設定などユーザー個別の情報をひとまとめにしたデータのことです。これによって、ログインするアカウントによってブックマークや閲覧履歴などを管理しています。プロファイルの実体は、Windowsなら%AppData%以下の

C:\Users\ユーザー名\AppData\Local\Google\Chrome\User Data\Profile 4

にあります。(Profile 4の部分はアカウントによって異なる)

このプロファイルの中身を見て、Google Chromeはログイン元が人間であるかどうかを判断しています。SeleniumでChromeDriverを動かす場合、プロファイルはAppData\Local\Temp\scoped_dirxxxxx_xxxxxxxxに一時的に作成され、実行後にはクリアされます。また、一時的に作られるプロファイルには、ログイン時に必要な情報が含まれていません。

そのため、SeleniumでChromeDriverを起動すると、本来手動でログインするときに持っている情報が不足しているため、「おまえは人間じゃないな!?セキュリティ的に不安だからログインを拒否する!」とはじかれてしまうのです。

Seleniumで自動ログインする方法

Seleniumで自動ログインするには、ログインしたいアカウントのプロファイルをプログラム内で指定する必要があります。

ログインしたいアカウントのプロファイルを確認する

ログインしたいアカウントのプロファイルを確認します。Google Chromeを開き、アドレスバーに以下を入力します。

chrome://version

すると、ユーザープロファイルの情報が表示されます。

「プロフィール パス」の、C:\Users~\User Dataまでをコピーします。

Seleniumの起動オプションでプロファイルを指定する

コード内でSeleniumの起動オプションにプロファイルを指定します。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

options = Options()
# プロファイルのパスを指定
options.add_argument('--user-data-dir=C:/Users/ユーザー名/AppData/Local/Google/Chrome/User Data')
# 使用するプロファイル(ユーザー)を指定
options.add_argument('--profile-directory=Profile 4')

# ブラウザを起動
driver = webdriver.Chrome(options=options)

# Google Chromeを開く
driver.get('https://www.google.com/?hl=ja/')

コピーしたパスをそのまま貼り付けると「SyntaxError: (unicode error)」が発生します。

\を/に変更して実行するようにしてください。

「options.add_argument(‘–profile-directory=Profile 4’)」を省いて実行すると、ログインアカウントの選択画面に遷移します。

上記コードを実行すると、Chromeにログインした状態で実行が可能となります。

まとめ

今回は、SeleniumでGoogleアカウントに自動ログインする方法について解説しました。

GmailやYoutube Studio、Google Driveなど、Googleにログインした状態で操作したい場面はけっこうあるかと思いますので、そのような場合に参考にしていただければ幸いです。

なお、Power Automate Desktopであればプロファイルの指定なくログインできるので、目的に応じて使い分けると良いかなと思います。

\楽天ポイント5倍セール!/
楽天市場
chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライターを経て現在QAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

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