web-dev-qa-db-ja.com

GMailがAutomation(Selenium)経由のログインをブロックしている

Seleniumを使用して、Webアプリケーションのメール検証プロセスを自動化しています。既にGmailにログインして、アカウントで受け取ったアクティベーションメールを読むためのスクリプトを用意しています。スクリプトは昨日まで完全に機能していましたが、今日、私は問題に直面しています。

Screenshot of issue

問題の追加のスクリーンショット Additional Screenshot of issue

ブラウザがSeleniumで起動されている場合、Gmailはサインインを許可しません。言う、

Googleが認識しないブラウザを使用しているか、サポートされていない方法で設定されています。

  • chrome version 76.0.3809.100(64 bit)。(以前使用されていたchromedriver 2.45)を使用しているため、chromedriverのバージョンを76.0.0にアップグレードしてみましたが、それでも問題は解決しません。
  • 自動化のためにChromeの代わりにFirefoxを使用しても、この問題が発生することを確認しました。
  • ブラウザでJavaScriptが有効になっていることを確認しました
  • GmailはOTPまたは回復メールを要求していません。それは、自動化を介してログインする私の試みを単にブロックしています。ただし、同じアカウントに手動でログインできます。

使用ソフトウェア:「webdriverio」:「^ 4.14.1」、「wdio-cucumber-framework」:「^ 2.2.8」

どんな助けでもありがたいです。

9
Balachander

試行錯誤の結果、この問題は同じアプリ/ IP /デバイスから複数のGmailアカウントが既に作成されているシナリオでのみ発生することがわかりました。グーグルはどういうわけかそれらのアカウントをマークし、それらが自動化フレームワーク/拡張機能によって起動された場合、それらをブロックします。

一時的な解決策:

  • 別のデバイスとは異なる携帯電話番号を使用して、新しいGMailアカウントを作成します(非推奨)。
  • nodemailerzeolearn.com/magazine/sending-and-receiveing-emails-using-nodejs (のような回避策を使用する必要がありますRahul Lが提案として言及したように)
  • Guerilla Mailまたは10 Minute Mailなどの一時的なメールプロバイダーを自動化しますメールの受信しか心配

UIと要素がどのように変化するかは予測できないため、サードパーティのMailアプリケーションのUIを自動化することは完全に避けたいと思います。セキュリティの目的での起動をブロックする可能性があり、そうするすべての権利を持っています!

貴重な時間を割いてくれてありがとう、ハムザラチとラフルL。

3
Balachander

エディターを開き、このコードをコピーして貼り付け、email.pyという名前で保存してから、そのディレクトリでterminal/cmd/powershellを開き、これを入力する必要がありますpython .\email.py

注:

chrome保存先のディレクトリにあるドライバを確認してくださいpython file

このコードをコピーしてエディターに貼り付ける必要があります

これがそのスクリプトです。

from Selenium import webdriver
from Selenium.webdriver.common.by import By
from Selenium.webdriver.support.ui import WebDriverWait
from Selenium.webdriver.support import expected_conditions as EC
import time
import pyautogui as pg


username = input("Enter Your Username: ")

password = input("Enter Your Password: ")

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier")
driver.maximize_window()


mail = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='identifierId']"))).send_keys(username)

login = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='identifierNext']/span"))).click()

passw = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='password']/div[1]/div/div[1]/input"))).send_keys(password)

next = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='passwordNext']/span/span"))).click()
1
Hamza Lachi

数時間の試行錯誤の末、うまくいったことを試しました。

構成にargs: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]を追加すると問題が解決しました。

別のメールアドレスを試してみたがうまくいかなかったので、これは私には役に立たなかったことが後でわかった。いくつかの観察の後、私は何か他のものを見つけ出し、これは試みられ、テストされました。

オートメーションの使用

https://stackoverflow.com/users/login に移動しますGoogle戦略でログインを選択しますGoogleのユーザー名とパスワードを入力しますStackoverflowにログインします https://gmail.com に移動します(またはアクセスしたいGoogleアプリ)

これを終日(約24時間)一貫して行った後、Gmail(またはアクセスしたいGoogleアプリ)への直接のログインを直接自動化してみてください...少なくとも2人が成功しました。 PS-全員が同じフェーズを通過したため、少なくともキャプチャ要求を受け取るまで、stackoverflowログインを続行することをお勧めします。

0
Yinka Alabi