当前位置: 首页 > 知识库问答 >
问题:

无法使用selenium automation登录谷歌,因为“此浏览器或应用程序可能不安全。”

濮阳宏硕
2023-03-14

我正试图用selenium登录谷歌,但我一直收到一个错误:“这个浏览器或应用程序可能不安全。”

我用来登录的功能是:

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

这和https://stackoverflow.com/questions/59433453/unable-to-log-into-google-account-in-selenium-chrome-driver和https://stackoverflow.com/questions/59276975/couldnt-sign-you-in-this-browser-or-app-may-be-insecure-python-selenium-chrome

我试过同时使用chrome和Firefox web驱动程序,但都不起作用,我也试过做

这让我想到,也许登录页面可以检测到我正在自动环境中运行。我尝试了这个解决方案,它可以隐藏应用程序在网络驱动程序中运行:网站可以检测到你何时使用chrome驱动程序使用硒吗?

我还研究了User-Agent,看看这是否是问题所在,但我发现它与我的常规chrome完全相同。

所有这些都没有奏效,这让我陷入困境。我看到过一些解决方案,它们说使用一个已经创建的用户配置文件,这个用户配置文件来自你的chrome的正常安装,但这对我的用例不起作用。

有人找到解决办法了吗?我已经找了好几个小时,结果空手而归。

编辑:这似乎最近受到了很多关注。我找到了一个解决方案,使我能够继续使用自动客户端,而不会出现太多问题。换成木偶演员。看看这些包:

    "puppeteer",
    "puppeteer-extra",
    "puppeteer-extra-plugin-stealth"

编辑2:我最近看到这个得到了很多关注。我找到了我最终用来登录的代码。我用木偶代替硒来做这件事

async function login(
  page: Page,
  username: string,
  password: string,
  backup: string
) {
  await page.goto("https://accounts.google.com/");

  await page.waitForNavigation();

  await page.waitForSelector('input[type="email"]');
  await page.click('input[type="email"]');

  await page.waitForNavigation();

  //TODO : change to your email
  await page.type('input[type="email"]', username);
  await page.waitForSelector("#identifierNext");
  await page.click("#identifierNext");

  await page.waitFor(1000);

  await page.waitForSelector('input[type="password"]');
  await page.click('input[type="password"]');
  await page.waitFor(500);
  //TODO : change to your password
  await page.type('input[type="password"]', password);

  await page.waitForSelector("#passwordNext");
  await page.click("#passwordNext");
  await page.waitForNavigation();
}

共有3个答案

戴瑞
2023-03-14

以下是对我有用的:

我用的是木偶演员,但我敢打赌任何自动脚本都是一样的。

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

您必须首先使用head less: false运行脚本,以便打开浏览器。如果您尝试在当前选项卡(自动导航的选项卡)上登录,那么每次登录尝试都会出现错误。

诀窍(对我来说)是打开一个新标签,手动导航,再试一次。

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

漆雕兴平
2023-03-14

经过几个小时的反复试验,我尝试了一些对我有效的方法

在我的配置中添加args:['--disable-web-Security','--user-data-dir','--allable-runing-insecure-content']解决了这个问题。

后来我意识到,这并没有帮到我,因为我尝试了另一封电子邮件,但没有成功。经过一些观察,我发现了一些其他的东西,这已经被尝试和测试过了。

使用自动化:

转到https://stackoverflow.com/users/login选择使用Google策略登录输入Google用户名和密码登录Stackoverflow转到https://gmail.com(或任何您想访问的Google应用程序)

在坚持一整天(大约24小时)之后,尝试直接自动登录gmail(或任何你想访问的谷歌应用程序)。。。我至少有另外两个人成功地做到了这一点。PS-您可能希望继续stackoverflow登录,直到您至少收到验证码请求,因为我们也都经历了这一阶段。

万俟华辉
2023-03-14

下面的工作我以及: 1.尝试登录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");
 类似资料:
  • 所以我一直在尝试通过selenium访问我的gmail或Google Colab笔记本。我没有通过电子邮件和密码进行身份验证,而是使用已保存的Google Chrome配置文件启动chromedriver,但它会抛出以下内容: 我已经尝试了以前行之有效的每一个解决方案,但现在不起作用了,我尝试的一些解决方案有: 禁用双因素身份验证 允许不太安全的应用程序访问 禁用我知道的每个标志,让网站检测到该网

  • 我在selenium上遇到了这个问题,我尝试运行下面的代码,但出现了以下错误:https://i.postimg.cc/VNd3F4rm/u2zrn.jpg . 我“登录谷歌”的图片:https://i.stack.imgur.com/w3POX.png(如你所见,“应用程序密码”在我看来并不存在) 我已经尝试禁用帐户设置中的“不太安全的应用”部分,并检查JavaScipt是否已激活,但没有成功。

  • 我必须使用selenium脚本登录gmail帐户,但我收到了错误消息 正如从其他来源读到的,谷歌不允许使用自动化脚本登录 机器:MacOS编程语言:Java 有人知道怎么解决吗?

  • 我试过用Gmail或任何谷歌服务登录,但它显示以下“此浏览器或应用程序可能不安全”消息: 我还尝试在acc中启用不太安全的应用程序,但没有成功。然后我建立了一个新的谷歌账户,它和我一起工作。但不是和我以前的acc。 我该怎么解决这个问题 如何在正常的chrome浏览器(而不是由自动化软件控制的浏览器)中打开selenium<这是我的代码

  • 问题内容: 我正在尝试使用selenium登录到google,但不断收到错误消息“此浏览器或应用可能不安全”。 我用来登录的功能是: 我尝试使用chrome和firefox网络驱动程序,但均无法正常工作。我也尝试过这样做也没有帮助。 这使我认为登录页面也许可以检测到我在自动化环境中运行。我尝试过这种解决方案,该解决方案使该应用程序[无法在Web驱动程序中运行:网站可以检测到您何时在chromedr

  • 谷歌浏览器可以当问其他页面,但是无法登录账号,打开会显示这个,大佬们如何解决?