web-dev-qa-db-de.com

Die Anmeldung bei einem Google Mail-Konto schlägt fehl (Selenium-Automatisierung).

Ich habe einen Selenium-Dienst, der sich als erster Schritt bei meinem Google Mail-Konto anmelden muss. Diese Funktion hat vor ein paar Wochen funktioniert, aber plötzlich schlägt die Anmeldung fehl und ich sehe diesen Fehler im Browser, der sowohl in Chrome als auch in Firefox-Treibern in Selenium - versucht wurde.

(enter image description here

Dieser Fehler tritt auf, nachdem der Selenium-Dienst die E-Mail-Adresse und das Kennwort eingegeben und auf die Anmeldeschaltfläche geklickt hat. Ein ähnlicher Fehler wurde auch im Google Support-Forum hier gemeldet - https://support.google.com/accounts/thread/10916318?hl=de , Sie sagten, dass "Google anscheinend Automatisierungstools eingeführt hat Erkennung auf ihrem Login-Flow! " In diesem Thread gibt es jedoch keine Lösung.

Einige andere Details, die nützlich sein könnten-

  • Ich kann mich in den Browsern nicht manuell bei Google-Konten anmelden
    eröffnet von Selen.
  • Ich kann mich jedoch manuell bei diesen Konten in der Anwendung Google Chrome) anmelden.

Lassen Sie mich wissen, wenn Sie sich den Code ansehen müssen, ich werde ihn hier veröffentlichen. Danke im Voraus!

Bearbeiten Hinzufügen von Beispielcode zum Verweisen.

public void loginGoogleAccount(String emailId, String password) throws Exception {
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--profile-directory=Default");
    options.addArguments("--whitelisted-ips");
    options.addArguments("--start-maximized");
    options.addArguments("--disable-extensions");
    options.addArguments("--disable-plugins-discovery");
    WebDriver webDriver = new ChromeDriver(options);
    webDriver.navigate().to("https://accounts.google.com");
    Thread.sleep(3000);
    try {
        WebElement email = webDriver.findElement(By.xpath("//input[@type='email']"));
        email.sendKeys(emailId);
        Thread.sleep(1000);

        WebElement emailNext = webDriver.findElement(By.id("identifierNext"));
        emailNext.click();
        Thread.sleep(1000);

        WebDriverWait wait = new WebDriverWait(webDriver, 60);
        wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("identifierNext")));

        Thread.sleep(3000);
        WebElement passwordElement = webDriver.findElement(By.xpath("//input[@type='password']"));
        passwordElement.sendKeys(password);

        Thread.sleep(1000);
        WebElement passwordNext = webDriver.findElement(By.id("passwordNext"));
        passwordNext.click();

    } catch (Exception e) {
        LOGGER.info(String.format("No email/password field available or it is already logged in: [%s]: ",
                e.getMessage()));
    }
}
9
gashu

Aktivieren Sie "Weniger sicheren App-Zugriff zulassen"
In Ihrem Konto gibt es eine Einstellung, die Sie umschalten können, um dies zu unterstützen. Es ist das "Weniger sicheren App-Zugriff zulassen". Sie sollten in der Lage sein, den folgenden Link zu besuchen, um diese Einstellung umzuschalten, wenn Sie bereits bei dem Google Mail-Konto angemeldet sind, das Sie ändern möchten.

Link zum Ändern der Einstellungen für das Google-Konto: https://myaccount.google.com/lesssecureapps

Weitere Informationen (Quelle): https://support.google.com/accounts/answer/6010255

5
NANfan

Überprüfen Sie, ob Ihre Chrome -Version> = 79 ist, und wenn ja, führen Sie ein Downgrade auf 78 durch. Folgendes habe ich getan (Windows):

Ich habe "Retail Chrome" deinstalliert, das sich ständig mit hinterhältigen Tricks wie Google Chrome-Dienste, die im Hintergrund nach Updates suchen) auf die neueste Version aktualisiert.

Selbst das Deaktivieren dieser Systemdienste hat nicht geholfen, da der Einzelhandel Chrome installiert auch Timer-Ereignisse, die diese Dienste mitten in der Nacht wieder aktivieren würden, sodass Sie mit einer neuen Version aufwachen würden). und nicht einmal bemerken, bis die Dinge brechen.

Ich habe v78 über das hier gefundene "Offline-Installationsprogramm" installiert, das anscheinend keine "hilfreichen" Funktionen für das automatische Upgrade installiert: https://www.neowin.net/news/google-chrome-780390470-offline -installer /

Das obige Problem verschwand wie Magie. Es scheint, dass in Version 79 einige Anti-Funktionen integriert sind, die Informationen nach Hause rufen, mit denen Google den Schluss ziehen kann, dass ein Bot am Werk ist.

Ich hoffe, das funktioniert für Sie ... wenn nicht, könnten Sie viel Zeit investieren und Ihren eigenen "Chrome-Simulator" erstellen, indem Sie Chromium entsprechend patchen und kompilieren ...

1
blitter

Dieses Problem war auf das Selenium chrome -Profil zurückzuführen. Erstellen Sie ein neues chrome -Profil und melden Sie sich mit der E-Mail-ID an, mit der Sie das Problem hatten. Dann Synchronisierung aktivieren.

Mit diesem chrome Profil an Ort und Stelle kann ich die Anmeldeschritte überspringen und direkt den Hauptprozess ausführen. Verwenden Sie: Chrome Options um neu erstelltes chrome Profil als Argument hinzuzufügen.

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("Binary path of the Chrome");

Hoffe dieser hilft dir.

1
pramod_maddu

Ich habe gerade etwas ausprobiert, das nach mehreren Stunden Versuch und Irrtum für mich funktioniert hat.

Hinzufügen von args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ] zu meiner Konfiguration hat das Problem behoben.

Später wurde mir klar, dass dies nicht das war, was mir geholfen hat, als ich es mit einer anderen E-Mail versuchte und es nicht funktionierte. Nach einigen Beobachtungen habe ich etwas anderes herausgefunden und dies hat sich bewährt.

Automatisierung verwenden :

Gehen Sie zu https://stackoverflow.com/users/login Wählen Sie Mit Google-Strategie anmelden. Geben Sie den Google-Benutzernamen und das Kennwort ein. Anmelden bei Stackoverflow. Gehen Sie zu https://gmail.com (oder auf welche Google App Sie auch immer zugreifen möchten)

Nachdem Sie dies einen ganzen Tag lang (ca. 24 Stunden) konsequent getan haben, versuchen Sie, Ihr Login direkt bei Google Mail (oder der Google-App, auf die Sie zugreifen möchten) direkt zu automatisieren. Mindestens zwei andere Personen haben dies mit Erfolg durchgeführt. PS - Möglicherweise möchten Sie mit der Stapelüberlauf-Anmeldung fortfahren, bis Sie zumindest eine Captcha-Anfrage erhalten, da wir alle diese Phase ebenfalls durchlaufen haben.

1
Yinka Alabi

Das funktioniert bei mir:

from Selenium import webdriver 
from time import sleep

username=raw_input("username: ") 
password=raw_input("password: ") 
driver=webdriver.Chrome('...')           
driver.get('https://stackoverflow.com/users/signup') 
sleep(3) 
driver.find_element_by_xpath('//*[@id="openid-buttons"]/button[1]').click() 
driver.find_element_by_id('identifierId').send_keys(username) 
driver.find_element_by_id('identifierNext').click() 
sleep(3) 
driver.find_element_by_name('password').send_keys(password) 
driver.find_element_by_id('passwordNext').click() 
sleep(2) 
driver.get('https://mail.google.com/mail/u/0/#inbox')

Ich habe eine ähnliche Lösung gefunden hier .

0