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

ddrv8njm  于 2022-12-18  发布在  Go
关注(0)|答案(6)|浏览(320)

我试图用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-driverhttps://stackoverflow.com/questions/59276975/couldnt-sign-you-in-this-browser-or-app-may-be-insecure-python-selenium-chrome相同的问题
我试过使用chrome和firefox的驱动程序,但都不起作用,我也试过使用.excludeSwitches(['enable-automation']),但也没有帮助。
这让我想到,也许登录页面可以检测到我在自动化环境中运行。我尝试了这个解决方案,它可以隐藏应用程序在Web驱动程序中运行:Can a website detect when you are using selenium with chromedriver?
我也调查了X11M1N1X,看看这是否是问题所在,但我发现它与我的普通Chrome One完全相同。
所有这些都不起作用,这让我陷入了困境。我见过一些解决方案,说要使用一个已经创建的用户配置文件,从您的正常安装的 chrome ,但这不会为我的用例工作。
有人找到解决这个问题的办法了吗?我已经找了几个小时了,但一无所获。

**编辑:**最近这似乎得到了很多关注。我找到了一个解决方案,可以让我继续使用自动化客户端而不会有太多问题。切换到Puppeteer。查看以下软件包:

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

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

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

t40tm48m

t40tm48m1#

以下内容也适用于我: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");

谢谢

pokxtpni

pokxtpni2#

经过几个小时的反复试验,我刚刚尝试了一些对我有效的东西。
args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]添加到我的配置中解决了这个问题。
后来我意识到这并没有帮到我,因为我尝试了另一个电子邮件,它没有工作。经过一些观察,我想出了其他的东西,这已经被尝试和测试。

使用自动化

Go to https://stackoverflow.com/users/login Select Log in with Google Strategy输入谷歌用户名和密码登录Stackoverflow Go to https://gmail.com(或任何你想访问的谷歌应用)
在坚持这样做了一整天(大约24小时)之后,尝试直接自动登录gmail(或者任何你想访问的谷歌应用程序)...我已经有至少两个人成功地做到了这一点。PS -你可能想继续使用stackoverflow登录,直到你至少得到一个验证码请求,因为我们也都经历过这个阶段。

66bbxpm5

66bbxpm53#

一个对我有效的解决方法是在webdriver启动的chrome示例中创建一个google账户,使用这个新创建的账户对我有效,但我不知道它和其他google账户有什么区别。

6ss1mwsb

6ss1mwsb4#

以下是对我有效的方法:
我使用的是Puppeteer,但我敢打赌,这是相同的任何自动脚本。
必须有一个userDataDirectory,以便浏览器可以使用相同的存储信息。
您必须首先使用headless: false运行脚本,以便打开浏览器。如果您尝试在当前选项卡(自动导航的选项卡)上登录,则每次尝试登录时都会收到该错误。
诀窍(对我来说)是打开一个新的标签页,手动导航,再试一次。
下次运行该脚本时,无需登录。

fjnneemd

fjnneemd5#

尝试使用undetected_chromedriver库:
!pip安装未检测到的chromedriver
导入undetected_chromedriver作为uc
driver = uc.Chrome(可执行路径='chromedriver.exe')#更改您的路径
驱动程序。get('https://accounts.google.com/ServiceLogin')#继续此处的工作代码...
对我来说效果很好

qjp7pelc

qjp7pelc6#

此错误消息...

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 无法验证浏览上下文,即浏览器会话。

潜在原因及解决方案

此错误背后可能有多种原因,如下所示:

  • @Raphael Schaad在文章"This browser or app may not be secure" error when trying to sign in with Google on desktop apps中提到,如果用户可以用其他谷歌账户正常登录同一个应用程序,那么问题一定出在特定的账户上。可能的原因是,这是用户使用双因素认证的唯一账户。
  • 另一个潜在原因可能是使用Less secure apps。如果应用程序或网站不符合google-chrome的安全标准,谷歌可能会阻止任何试图登录你帐户的人。安全性较低的应用程序可能会让黑客更容易进入你的帐户,因此阻止从这些应用程序登录有助于保护你的帐户安全。

溶液
在这些情况下,相应的解决方案是:

您可以在登录到gmail帐户失败(selenium自动化)中找到详细的讨论

时间;日期

一对夫妇的相关文件:

相关问题