2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google認証するサイトのログインを半自動化したかった

Last updated at Posted at 2022-05-02

あらすじ

お小遣い稼ぎに登録しているクラウドソーシングサービスサイトでは、
ID/Pass認証のほかにもGoogleとかソーシャル系のアカウントを使って
アカウント作成ができたりする。

Login画面.png

こんなの。

普通にID/Passでログインするならば、Selenium使って
ID/Passの入力欄の情報を取ってそこに自分のログイン情報を突っ込んで、
ボタン押下するコードを書いてやれば大した苦労もなくログインできるはず……

しかし、Googleでログインは自動化しようとすると一筋縄ではいかなさそうだった。
特に対策もせずにその先の画面で同じことをしようとすると認証の画面でエラーが出る。
それに対しては、一度ログインに成功したブラウザのユーザプロファイルを使用して
Chromeを起動させれば認証を飛び越えてログイン後のページに遷移することができる模様。

環境

  • Python 3.x
  • selenium 3.141.0
  • Chrome 100.0.4896.127 (Official Build) (64 ビット) (cohort: Stable)

手順

目的のサイトにGoogle認証でログインする

まずは、いつもの手順でログインしておく。

Chromeのプロファイルを確認する
Chromeのアドレスバーに入力
chrome://version

遷移したページから「プロフィールパス」を確認してメモしておく

出力例
プロフィール パス	C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data\Default
ブラウザ起動のコードに組み込む
ブラウザ起動
def getDriver():
    options = webdriver.ChromeOptions()

    # 前の手順で控えたプロファイル情報を持ったパスの一つ上を指定する。
    # ※\はエスケープしておく
    profileFolder = '--user-data-dir=C:\\Users\\<ユーザ名>\\AppData\\Local\\Google\\Chrome\\User Data'
    options.add_argument(profileFolder)

    driver = webdriver.Chrome('chromedriver.exe',options=options)
    
    return driver

こいつを呼び出すと、Chrome起動時にChromeで使用しているどのユーザで
Chromeを起動するか聞かれるので、いつも使っているユーザを指定すると
Googleログイン認証をスキップしてログイン後のページにログインできる。
User選択.png

※同じユーザで別の作業をしているときは
 その作業を全部落としておかないとコケるので
 普段別のことでタブをミリサイズにしている人は注意。。。

おまけ

※同じユーザで別の作業をしているときは
 その作業を全部落としておかないとコケるので
 普段別のことでタブをミリサイズにしている人は注意。。。

……って書いた後に検証がてらやってみたんだけど、
なんか再現しなかったので以下の感じで行けるかも。

  1. あらかじめ認証できるユーザで認証しておく。(そのブラウザは閉じずにおいておく
  2. Chromeで利用している別のプロファイルを使用するように書き換える
Option書き換え
def getDriver():
    options = webdriver.ChromeOptions()

    # 前の手順で控えたプロファイル情報を持ったパスの一つ上を指定する。
    # ※\はエスケープしておく
-   fileFolder = '--user-data-dir=C:\\Users\\<ユーザ名>\\AppData\\Local\\Google\\Chrome\\User Data'
+   fileFolder = '--user-data-dir=C:\\Users\\<ユーザ名>\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 4'
    options.add_argument(profileFolder)

    driver = webdriver.Chrome('chromedriver.exe',options=options)
    
    return driver

Profileの数字はそれぞれのパスをGUIで見ると
使っているアイコンのファイルがあるのでそれを参考にして選択しよう。
特に別のアカウントを使わずにやっている人は
chrome://versionの時にDefaultが選択されているはず。

最近自分でID/Passを作成せずにGoogleアカウントで
サクっとやっちゃうことが多くてついに弊害が出始めたかと思ったけど
自動でログインする仕組みがちゃんとあってよかったです。
できることが増えると情報収集の幅がどんどん広がっていって楽しいですね。

2
0
0

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?