web-dev-qa-db-ja.com

Gmailアカウントへのサインインが失敗する(Seleniumオートメーション)

最初のステップとして、Gmailアカウントにログインする必要があるSeleniumサービスがあります。この機能は数週間前に機能していましたが、突然ログインに失敗し、ブラウザにこのエラーが表示されます。ChromeとSeleniumのFirefoxドライバーの両方で試しました-

enter image description here

このエラーは、Seleniumサービスが電子メール、パスワードを挿入し、サインインボタンをクリックした後に発生します。同様のエラーがGoogleサポートフォーラムでも報告されました https://support.google.com/accounts/thread/10916318?hl=ja 、彼らは言った、「Googleは自動化ツールを導入しているようですログインフローの検出!」しかし、このスレッドには解決策はありません。

役に立つかもしれないその他の詳細-

  • ブラウザーでGoogleアカウントに手動でログインできない
    セレンによって開かれました。
  • しかし、Google Chromeアプリケーションでこれらのアカウントに手動でログインできます。

コードを確認する必要がある場合はお知らせください。ここに投稿します。前もって感謝します!

Edit参照するサンプルコードを追加します。

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()));
    }
}
8
gashu

Toggle "Allow Less Secure App Access"
アカウントを切り替えることができる設定があり、これが役立つ場合があります。これは「安全性の低いアプリアクセスを許可する」です。変更するGmailアカウントに既にログインしている場合は、下のリンクにアクセスして、その設定を切り替えることができます。

Googleアカウントの設定を変更するリンク: https://myaccount.google.com/lesssecureapps

詳細情報(ソース): https://support.google.com/accounts/answer/6010255

5
NANfan

Chromeバージョンが79以上であるかどうかを確認してください。バージョンが79以上の場合は、78にダウングレードしてください。これが私が行ったことです(Windows):

Google Chromeバックグラウンドで更新をチェックするサービスなど)の卑劣なトリックを使用して、常に最新バージョンにアップグレードし続けていた "小売用Chrome"をアンインストールしました。

これらのシステムサービスを無効にしても効果はありませんでした。小売Chromeは、深夜に上記のサービスを再度有効にするタイマーイベントもインストールするため、新しいバージョンに目覚めます。物事が壊れるまで気付かない。

ここにある「オフラインインストーラー」からv78をインストールしましたが、「役立つ」自動アップグレード機能がインストールされていないようです。 https://www.neowin.net/news/google-chrome-780390470-offline -installer /

上記の問題は魔法のように消えました。 v79には、ボットが動作しているとGoogleが結論付けることができる情報で家に電話をかける、いくつかのアンチ機能が組み込まれているようです。

これがうまくいくことを願っています...うまくいかない場合は、多くの時間を費やし、それに応じてChromiumにパッチを適用してコンパイルすることで、独自の「Chromeシミュレータ」を作成できます...

1
blitter

この問題は、Selenium chromeプロファイルが原因です。新しいchromeプロファイルを作成し、問題に直面していたメールIDでログインしてください。次に、同期をオンにします。

このchromeプロファイルを設定すると、ログイン手順を省略してメインプロセスを直接実行できます。次を使用してください:Chrome Options新しく作成したchromeプロファイルを引数として追加します。

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

これがお役に立てば幸いです。

1
pramod_maddu

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

構成に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ログインを続行することをお勧めします。

1
Yinka Alabi