実現したいこと
通常起動ブラウザのログイン状態を、selenium起動ブラウザに引継ぎたいのですが、
プロファイルの指定をしても実現ができません。
おそらくCookieのセッション情報を別途引き継ぐ必要があると考えているのですが、
解決方法をご教授いただきたいです。
※実現できる方法があればOS/ブラウザは問いません
背景・環境
pythonでseleniumを利用したスクレイピングシステムを実装中ですが、
reCAPCHA(画像認証)のあるサイト(※1)で通常ブラウザ(Chrome)でのログイン状態を引継ぎたい。
※1:https://ssl.aucfan.com/member/login
要件として2つのポイントがあります。
①ログインのみ手動で行いたい(2Captcha(reCAPCHAを自動で突破するサービス)は利用しない)
②手動ログイン時はseleniumを利用したくない(selenium起動ブラウザでは画像認証の難易度が上がり時間がかかる)
[環境]
OS : MacOS Catalina 10.15.7
ブラウザ : Google Chrome 88.0.4324.192
Python : 3.7.6
selenium : 3.141.0
試したこと1
Chromeのデフォルトプロファイルを引き継いでseleniumでドライバを作成し、
ログイン後の画面URLを起動しましたが、ログイン画面に返されてしまいます。
(このやり方ではセッション情報の引き渡しができないことが問題と考えてます)
Terminal
1# 独自プロファイルを指定して通常ブラウザ起動 2open -a "Google Chrome" https://ssl.aucfan.com/member/login -n --args --user-data-dir="独自プロファイルパス" 3# -> サイトにログインしてブラウザ終了
python
1import os 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options as opt 4from webdriver_manager.chrome import ChromeDriverManager 5 6# ログイン情報を保管している独自プロファイルパスを指定してdriver生成 7options = opt() 8options.add_argument('--user-data-dir=' + '独自プロファイルパス') 9options.add_argument('--profile-directory=Default') 10driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options) 11 12# ログイン後URLをオープン 13driver.get('https://aucfan.com/member/myaucfan') 14# -> ログイン画面が表示される 15
試したこと2(成功するが2つ目の要件を満たせない)
seleniumでブラウザを起動し手動ログインの後、cookieを保存してブラウザ終了。
再度seleniumでブラウザを起動し、保存したcookieを読み込んでログイン後URLをオープンすることで、
ログイン状態が維持できることは確認済みです。
python
1#login.py 2import os 3from selenium import webdriver 4from selenium.webdriver.chrome.options import Options as opt 5from webdriver_manager.chrome import ChromeDriverManager 6 7options = opt() 8options.add_argument('--user-data-dir=' + '独自プロファイルパス') 9options.add_argument('--profile-directory=Default') 10driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options) 11 12# ログインURLをオープン 13driver.get('https://ssl.aucfan.com/member/login')
python
1# save_cookies.py 2import pickle 3pickle.dump(driver.get_cookies() , open('cookie保管パス', 'wb'))
python
1# open_top.py 2import os 3from selenium import webdriver 4from selenium.webdriver.chrome.options import Options as opt 5from webdriver_manager.chrome import ChromeDriverManager 6 7options = opt() 8options.add_argument('--user-data-dir=' + '独自プロファイルパス') 9options.add_argument('--profile-directory=Default') 10driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options) 11 12# クッキー設定 13driver.get("http://www.google.com") 14cookies = pickle.load(open('cookie保管パス', 'rb')) 15for cookie in cookies: 16 driver.add_cookie(cookie) 17 18# トップURLをオープン 19driver.get('https://aucfan.com/member/myaucfan')
あなたの回答
tips
プレビュー