由于“此浏览器或应用程序可能不安全”,因此无法使用Selenium自动化登录google。

时间:2019-12-28 19:06:18

标签: javascript selenium google-chrome selenium-webdriver selenium-chromedriver

我正在尝试使用硒登录google,并且不断收到错误消息“此浏览器或应用可能不安全。”

我用来登录的功能是:

std::vector

与以下问题相同 Unable to log into google account in selenium chrome drivercouldn't sign you in this browser or app may be insecure (python selenium chrome 78)

我尝试同时使用chrome和firefox Web驱动程序,但均无法正常工作。 我也尝试过async function loginToChrome(driver, username, password) { await driver.get("https://accounts.google.com/signin"); await driver.sleep(1000); let email_phone = await driver.findElement( By.xpath("//input[@id='identifierId']") ); await email_phone.sendKeys(username); await driver.findElement(By.id("identifierNext")).click(); await driver.sleep(1000); let passEl = await driver.findElement(By.xpath("//input[@name='password']")); await passEl.sendKeys(password); await driver.findElement(By.id("passwordNext")).click(); await driver.sleep(1000); } ,但也无济于事。

这使我认为登录页面也许可以检测到我在自动化环境中运行。 我尝试过这种解决方案,该解决方案隐藏了该应用程序正在Web驱动程序中运行:Can a website detect when you are using selenium with chromedriver?

我还研究了.excludeSwitches(['enable-automation'])来确定是否是问题所在,但是发现它与我的常规Chrome完全相同。

所有这些都没有奏效,这使我陷入困境。我见过一些解决方案,说要使用您在普通的chrome安装中已经创建的用户个人资料,但这不适用于我的用例。

有人找到解决方案吗?我一直在寻找时间,空手而归。

5 个答案:

答案 0 :(得分:9)

以下内容同样适用于我: 1.尝试使用您的Google帐户登录stackoverflow 2.登录后,转到电子邮件

这是解决方法

     WebDriver driver;
    System.setProperty("webdriver.chrome.driver", "chromeDriver/chromedriver.exe");
    driver = new ChromeDriver();
     GeneralClass te =  new GeneralClass ();

    driver.get("https://accounts.google.com/signin/oauth/identifier?client_id=717762328687-iludtf96g1hinl76e4lc1b9a82g457nn."
            + "apps.googleusercontent.com&as=JS6BM8cjL-8j9votansdkw&destination=https%3A%2F%2Fstackauth"
            + ".com&approval_state=!ChRoYWVvLUlNMk5hSXJWUGlaSVl2WBIfc3lSa0lueENpb29lSU5vbEVpbVNxcUZGaGNkSEJoYw%E2%88%99AJDr988AAAAAXlBKc7PzEomxSzgNqd4wLptVlf0Ny3Qx&oauthgdpr=1&xsrfsig=ChkAeAh8T8JNDxCf2Zah5fb_rQ55OMiF8KmMEg5hcHByb3ZhbF9zdGF0ZRILZGVzdGluYXRpb24SBXNvYWN1Eg9vYXV0aHJpc2t5c2NvcGU&flowName=GeneralOAuthFlow");
     te.waitingForElementSendingKey(driver, By.id("identifierId"), "XXXXXXXX@gmail.com");
     te.waitingForElementForClickOnly(driver, By.id("identifierNext"));
     te.waitingForElementSendingKey(driver,By.name("password"), "PASSSWORD");
     te.waitingForElementForClickOnly(driver, By.id("passwordNext"));
     Thread.sleep(1500);
     driver.get("https://mail.google.com/mail/u/0/#inbox");

谢谢

答案 1 :(得分: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应用)...我至少有两个人这样做成功。 PS-您可能要继续进行stackoverflow登录,直到我们都经历了该阶段为止,至少收到验证码请求。

答案 2 :(得分:1)

此错误消息...

This browser or app may not be secure.
Try using a different browser. If you’re already using a supported browser, you can refresh your screen and try again to sign in.

...表示 WebDriver 无法验证浏览上下文,即 Browser 会话。


@Raphael Schaad在文章"This browser or app may not be secure" error when trying to sign in with Google on desktop apps中提到,如果用户可以使用其他Google帐户正常登录同一应用程序,则问题必须出在特定的帐户上。可能的原因是,这是用户使用双因素身份验证的唯一帐户。


tl;博士

Sign in with a supported browser

答案 3 :(得分:0)

一个对我有用的解决方法是在由网络驱动程序启动的Chrome实例中创建一个Google帐户。使用这个新创建的帐户对我有用,但是我不能说出它与其他Google帐户之间到底有什么区别。

答案 4 :(得分:0)

这对我有用:

我正在使用Puppeteer,但我敢打赌,对于任何自动化脚本来说都是一样的。

您必须具有userDataDirectory,以便浏览器可以使用相同的存储信息。

您必须首先使用headless: false运行脚本,以便打开浏览器。如果您尝试在当前标签页(自动导航的标签页)上登录,则每次尝试登录时都会收到该错误。

对我来说,诀窍是打开一个新标签页,手动导航,然后重试。

下次运行脚本时,无需登录。