LoginSignup
4
3

More than 1 year has passed since last update.

seleniumを利用してGoogle認証を通す方法

Posted at

やりたいこと

Googleアカウントで認証されるサイトにログインしたい。

■実行環境
 jupyter notebook(Chromeで実行)
■言語 
 python
■ライブラリ
 selenium

ぶちあたった壁①

下記のコードでchromeが起動され、Googleのアカウント入力画面が表示されるところ
まではいいのですが、入力後「ログインできませんでした」メッセージが表示されます。
機械による操作と判断されたときのGoogle側の対処のようです。

from selenium import webdriver
browser = webdriver.Chrome(r'C:\Users\[ユーザ名]\chromedriver.exe')
browser.get([目的のURL])

image.png

ぶちあたった壁②

Googleアカウントが認証されたプロファイルを指定(※)してseleniumでchromeを起動
すれば認証が通る、という記事を見つけたので早速実行!
※プロファイルとはPCのログインユーザに近いイメージでGoogleアカウント
 そのものではありません
 そのプロファイルでGoogleアカウント認証させておくことを意味します

<補足>
 現在自分がどのプロファイルを利用しているかはChromeのアドレスバーで
  chrome://version
 と入力した時、「プロフィール パス」項目に表示されます。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument(r'--user-data-dir=C:\Users\[ユーザ名]\AppData\Local\Google\Chrome\User Data')
options.add_argument(r'--profile-directory=Default')

browser = webdriver.Chrome(r'C:\Users\[ユーザ名]\chromedriver.exe',options=options)
browser.get([目的のURL])

奮闘空しく、エラー発生・・・
「すでに該当のディレクトリは使われている」との事です・・・

InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir

ぶちあたった壁③

とすると、ディレクトリ(フォルダのパス)を変えればいいんじゃね?
と思いますよね?

そこで完全に別にフォルダ(C:\workspace)を作成し、そこに
 C:\Users[ユーザ名]\AppData\Local\Google\Chrome\User Data
 ┗Default
のフォルダをまるまるコピーし、下記部分のみ変更して、いざ実行!

options.add_argument(r'--user-data-dir=C:\workspace')

エラーにはならなかったですが、chromeの右上のユーザアイコンが指定したプロファイルの
ものではなかったです。
気にせず(いや、かなり気になりつつも)そのまま、Googleログインしようとしたが、
「ぶちあたった壁①」と同じ結果に・・・

解決

「Jupyter Notebook(Chromeで実行)」ではなく「Visual Studio Code」側で実行したら、
するりと壁をすりぬけました。

コードは「ぶちあたった壁②」のものでいけました。

Chrome上でJupyter Notebookを起動せずにすんだので、「ぶちあたった壁②」を回避できた
ということでしょう。

「ぶちあたった壁③」で行けなかった理由は結局わかっておりませんが、まぁよしとしましょう。

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3