Gmailアカウントへのサインインが失敗する(セレン自動化)


8

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

ここに画像の説明を入力してください

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

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


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

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

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

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

1
Google自体の制限のように聞こえますが、UIオートメーションを使用してサービスにアクセスすることを望まないでしょう。最近、この同じ問題がStackOverflowで何度か表示されましたが、問題は常に同じです。あなたはおそらく彼らのAPIを使用してより幸運になるでしょう。
クリスティーン

ロボットがログインしようとしている可能性があることをGoogleが認識しているようで、@ Christineが言ったようにそのようなことを望まないようです... ロボット(スクリプト)を検出できないように、ここに記載さているようにchromedriverを変更してみてください。また、ログイン中はテキストボックスの各キーを押す前にランダムな待機を使用して、キャプチャが表示されないようにする必要があります。キーをテキストボックスに直接送信しないでください。
Ali Sajjad

@ChristineどのAPIを参照していますか?
2019

@AliSajjadそれは役に立たなかった、私はchromedriverを修正することと、ランダムな待機時間の両方を試しました。
ガスウ

使用されているuserAgentを変更してみましたか?たぶん、SeleniumはSeleniumとして紹介されているため、Googleがそれをブロックしようとしています。これは役立つかもしれません-> stackoverflow.com/a/29966769/2838206
klubi

回答:


5

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

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

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


私は間違いなくこのソリューションをお勧めします。この設定は、JavaのメールAPIを使用して、またはUIの介入なしにMaven構成を使用してログインするのに役立ちます。
Amit Jain

3
私はすでにこれを試しました、残念ながら、これは問題を解決しませんでした。
摩周

@gashuこのテストで何をしようとしているのか正確に説明してくれませんか?何が起こっているのかをさらに分離または修正するためのツールがいくつかあります。この記事では、そのようなツールの1つについて説明します。テストのセットアップ方法、実行されるアクション、およびテストの終了時に何が主張されるかについての詳細を教えていただければ、役立つ方向を示すのに役立ちます。 medium.com/@levz0r/...
NANfan

4
私のために働いていませんでした。
SurpriseDog

1
問題は具体的にはSeleniumに関するものでした。Seleniumはアプリではなく、サポートされているアプリでもないため、アプリの設定があまり成功しない場合は関係ありません。Googleは、ログインがWebドライバーを使用してブラウザーから開始されたことを検出できます。この新しいブロックは、それを明確にターゲットとしています。現在、既知の解決策はありません。
ムーンストーン

3

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

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

この問題は、セレンクロムプロファイルが原因でした。新しいChromeプロファイルを作成し、問題に直面していたメールIDでログインします。次に、同期をオンにします。

このChromeプロファイルを配置すると、ログイン手順をスキップして、メインプロセスを直接実行できます。使用:Chrome Options新しく作成されたChromeプロファイルを引数として追加します。

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

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


1
返信ありがとうございます!しかし、私はクロムプロファイルを作成する必要がないソリューションを探していました。プロファイルが間違っていなければ、セレンは一度に1つのブラウザーを開くことができますよね?Chromeプロファイルが既に使用されているように、エラーが発生し始めます。
摩周

1

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

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

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

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

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

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


Chrome v78が卑劣な自動アップグレード機能をインストールしないと思うのは間違いでした。再起動時に頻繁にバージョン80以降に置き換わります。この動作を止める唯一の方法は、ChromeをC:\Users\USERNAME\AppData\Local\Google\Chrome\Application起動する前に確認することです。ファイルがある場合new_chrome.exe、および/またはという名前のフォルダ80.*(あなたがこれを読んで、時間によって、またはそれ以上)、それはその強制自動更新を解雇しました。削除new_chrome.exeしてから起動しchrome.exeます。new_chrome.exe開始する前に削除するバッチファイルを作成するのは簡単chrome.exeです。
ブリッタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.