everyday-study

【Python/Selenium】ユーザープロファイルを利用した自動ログイン

前回ではPythonSeleniumを組み合わせてブラウザを自動で操作するために必須なドライバーの整合性を自動で合わせるプログラムについて書きました

everyday-study.hatenablog.jp

今回はユーザープロファイルを利用した自動ログインについてです
ウェブサイトによってはログインが必要な場合が数多くあるかと思います
そのような場合でも愚直にweb上の要素を取得して自動操作することは可能ですが、
正直面倒ですし、reCAPTCHAをスルーできるようにするためなどの理由から
Selenium操作時においてログイン情報を保持するようにします

ブラウザのプロファイルについて

普段ブラウザを使用しているとサイトに一度ログインしたら、ブラウザを閉じてから再び開いてもログイン情報は保持されています
プロファイルにはcookieや履歴、ブラウザの設定情報などが保存されており、その情報を読み取っているのでログインする手間が省略されます
ただ、Seleniumで操作する場合はユーザープロファイルを指定しない場合は毎回新規プロファイルでブラウザを立ち上げるためか前述したように毎回ログインすることになります

コード内でプロファイルのパスを指定する

それであれば、Seleniumからブラウザを立ち上げる際にログイン情報が保存されているプロファイルを指定してあげればいいはずです
その指定を行うのがoptionsです
下記のサンプルコード内の

options.add_argument('--user-data-dir=' + userdata_dir)

の部分でプロファイルのパスを指定しています

サンプルコード

このサンプルコードはプロファイルを普段使用しているものとは別に分けています
※ブラウザはChromeを使用しています

import os
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
userdata_dir = './UserProfile'  # カレントディレクトリの直下に作る場合
os.makedirs(userdata_dir, exist_ok=True)

options = webdriver.ChromeOptions()
options.add_argument('--user-data-dir=' + userdata_dir)

#ドライバーの自動取得(詳細は前回の記事参照)
driver = webdriver.Chrome(ChromeDriverManager().install(),options=options)
driver.get("https://www.amazon.co.jp")

"""
この間で手動で対象サイトにログインする
"""

time.sleep(30)
driver.quit()

参考リンク

qiita.com