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 Selen ausprobiert wurde.
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 die Erkennung von Automatisierungstools für ihren Anmeldefluss eingeführt hat!" In diesem Thread gibt es jedoch keine Lösung.
Einige andere Details, die nützlich sein könnten-
- Ich kann mich in den
von Selenium geöffneten Browsern nicht manuell bei Google-Konten anmelden . - Ich kann mich jedoch manuell bei diesen Konten in der Google Chrome-Anwendung 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()));
}
}
Antworten:
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 in Ihrem Google-Konto: https://myaccount.google.com/lesssecureapps
Weitere Informationen (Quelle): https://support.google.com/accounts/answer/6010255
quelle
Ich habe gerade etwas ausprobiert, das nach mehreren Stunden Versuch und Irrtum für mich funktioniert hat.
Durch Hinzufügen
args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]
zu meiner Konfiguration wurde 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 wurde erprobt und getestet.
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. Melden Sie sich bei Stackoverflow an. Gehen Sie zu https://gmail.com (oder zu der Google-App, auf die Sie 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.
quelle
Dieses Problem war auf das Selen-Chrom-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. Schalten Sie dann die Synchronisierung ein.
Mit diesem Chromprofil kann ich die Anmeldeschritte überspringen und den Hauptprozess direkt ausführen. Verwenden Sie
Chrome Options
:, um ein neu erstelltes Chrome-Profil als Argument hinzuzufügen.Hoffe dieser hilft dir.
quelle
Überprüfen Sie, ob Ihre Chrome-Version> = 79 ist, und führen Sie in diesem Fall 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-Diensten, die im Hintergrund nach Updates suchen, ständig auf die neueste Version aktualisiert.
Selbst das Deaktivieren dieser Systemdienste hat nicht geholfen, da Chrome im Einzelhandel auch Timer-Ereignisse installiert, die diese Dienste mitten in der Nacht wieder aktivieren, sodass Sie mit einer neuen Version aufwachen und es erst bemerken, wenn Probleme auftreten.
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 ...
quelle
C:\Users\USERNAME\AppData\Local\Google\Chrome\Application
vor dem Starten von Chrome zu überprüfen. Wenn eine Dateinew_chrome.exe
und / oder ein Ordner mit dem Namen80.*
(oder höher zum Zeitpunkt des Lesens) vorhanden ist, wurde die erzwungene automatische Aktualisierung ausgelöst. Löschennew_chrome.exe
und dann startenchrome.exe
. Es wäre trivial, eine Batch-Datei zu schreiben, dienew_chrome.exe
vor dem Start gelöscht wirdchrome.exe
.