最初のステップとして、Gmailアカウントにログインする必要があるSeleniumサービスがあります。この機能は数週間前に機能していましたが、突然ログインに失敗し、ブラウザにこのエラーが表示されます。ChromeとSeleniumのFirefoxドライバーの両方で試しました-
このエラーは、Seleniumサービスが電子メール、パスワードを挿入し、サインインボタンをクリックした後に発生します。同様のエラーがGoogleサポートフォーラムでも報告されました https://support.google.com/accounts/thread/10916318?hl=ja 、彼らは言った、「Googleは自動化ツールを導入しているようですログインフローの検出!」しかし、このスレッドには解決策はありません。
役に立つかもしれないその他の詳細-
コードを確認する必要がある場合はお知らせください。ここに投稿します。前もって感謝します!
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()));
}
}
Toggle "Allow Less Secure App Access"
アカウントを切り替えることができる設定があり、これが役立つ場合があります。これは「安全性の低いアプリアクセスを許可する」です。変更するGmailアカウントに既にログインしている場合は、下のリンクにアクセスして、その設定を切り替えることができます。
Googleアカウントの設定を変更するリンク: https://myaccount.google.com/lesssecureapps
詳細情報(ソース): https://support.google.com/accounts/answer/6010255
Chromeバージョンが79以上であるかどうかを確認してください。バージョンが79以上の場合は、78にダウングレードしてください。これが私が行ったことです(Windows):
Google Chromeバックグラウンドで更新をチェックするサービスなど)の卑劣なトリックを使用して、常に最新バージョンにアップグレードし続けていた "小売用Chrome"をアンインストールしました。
これらのシステムサービスを無効にしても効果はありませんでした。小売Chromeは、深夜に上記のサービスを再度有効にするタイマーイベントもインストールするため、新しいバージョンに目覚めます。物事が壊れるまで気付かない。
ここにある「オフラインインストーラー」からv78をインストールしましたが、「役立つ」自動アップグレード機能がインストールされていないようです。 https://www.neowin.net/news/google-chrome-780390470-offline -installer /
上記の問題は魔法のように消えました。 v79には、ボットが動作しているとGoogleが結論付けることができる情報で家に電話をかける、いくつかのアンチ機能が組み込まれているようです。
これがうまくいくことを願っています...うまくいかない場合は、多くの時間を費やし、それに応じてChromiumにパッチを適用してコンパイルすることで、独自の「Chromeシミュレータ」を作成できます...
この問題は、Selenium chromeプロファイルが原因です。新しいchromeプロファイルを作成し、問題に直面していたメールIDでログインしてください。次に、同期をオンにします。
このchromeプロファイルを設定すると、ログイン手順を省略してメインプロセスを直接実行できます。次を使用してください:Chrome Options
新しく作成したchromeプロファイルを引数として追加します。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("Binary path of the Chrome");
これがお役に立てば幸いです。
数時間の試行錯誤の末、うまくいったことを試しました。
構成に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ログインを続行することをお勧めします。