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

2023-04-19前端开发问题
324

本文介绍了由于“此浏览器或应用程序可能不安全",无法使用 selenium 自动化登录 Google.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在尝试使用 selenium 登录 Google,但我不断收到此浏览器或应用程序可能不安全"的错误消息.

I am trying to login to google with selenium and I keep getting the error that "This browser or app may not be secure."

我用来登录的功能是:

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/无法登录到-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 网络驱动程序,但都不起作用.我也尝试过 .excludeSwitches(['enable-automation']) 也没有帮助.

I have tried using both the chrome and firefox web drivers and both don't work. I have also tried doing .excludeSwitches(['enable-automation']) which also didn't help.

这让我觉得登录页面可能会检测到我在自动化环境中运行.我尝试了这个解决方案,它可以隐藏应用程序在网络驱动程序中运行:当您使用 selenium 和 chromedriver 时,网站可以检测到吗?

This made me think that maybe the sign-in page could detect that I was running in an automated environment. I tried this solution that would hide that the app is running in a web driver: Can a website detect when you are using selenium with chromedriver?

我还查看了 User-Agent 是否是问题所在,但我发现它与我的常规 chrome 相同.

I have also looked into the User-Agent to see if that was the problem but what I have found is that it is identical to my regular chrome one.

所有这些都没有奏效,这让我陷入了困境.我见过一些解决方案,说要使用正常安装的 chrome 中已经创建的用户配置文件,但这不适用于我的用例.

All of this has not worked which makes leaves me stuck. I have seen solutions that say to use an already created user profile from your normal installation of chrome, but this wouldn't work for my use case.

有没有人找到解决这个问题的方法?我已经找了好几个小时,却空手而归.

Has anyone found the solution to this? I have been searching for hours and have come up empty-handed.

看来这件事最近引起了很多关注.我找到了一个解决方案,让我可以继续使用自动化客户端而不会遇到太多问题.切换到 Puppeteer.查看这些包:

It seems like this has been getting a lot of attention recently. I found a solution that allowed me to continue to use an automated client without having too many problems. Switching to Puppeteer. Look into these packages:

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

编辑 2:我看到这最近引起了很多关注.我找到了我最终用来登录的代码.我使用 puppeteer 而不是 selenium 来做到这一点

EDIT 2: I have seen this get a lot of attention recently. I found the code that I ended up using to login. I used puppeteer instead of selenium to do this

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

推荐答案

以下方法也适用于我:1.尝试用你的google账号登录stackoverflow2. 登录后,进入邮箱

The followings work me as well: 1. try to login stackoverflow with your google account 2. once login, go to the email

解决办法

     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 自动化登录 Google.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

js删除数组中指定元素的5种方法
在JavaScript中,我们有多种方法可以删除数组中的指定元素。以下给出了5种常见的方法并提供了相应的代码示例: 1.使用splice()方法: let array = [0, 1, 2, 3, 4, 5];let index = array.indexOf(2);if (index -1) { array.splice(index, 1);}// array = [0,...
2024-11-22 前端开发问题
182

JavaScript小数运算出现多位的解决办法
在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会...
2024-10-18 前端开发问题
301

JavaScript(js)文件字符串中丢失"\"斜线的解决方法
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转...
2024-10-17 前端开发问题
437

layui中table列表 增加属性 edit="date",不生效怎么办?
如果你想在 layui 的 table 列表中增加 edit=date 属性但不生效,可能是以下问题导致的: 1. 缺少日期组件的初始化 如果想在表格中使用日期组件,需要在页面中引入 layui 的日期组件,并初始化: script type="text/javascript" src="/layui/layui.js"/scrip...
2024-06-11 前端开发问题
455

Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)...
2024-04-20 前端开发问题
5

CoffeeScript 总是以匿名函数返回
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)...
2024-04-20 前端开发问题
13