首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于“此浏览器或应用程序可能不安全”,无法使用selenium自动化登录谷歌。

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

Stack Overflow用户
提问于 2019-12-28 19:06:18
回答 5查看 34.1K关注 0票数 16

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

我用来登录的函数是:

代码语言:javascript
运行
复制
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的web驱动程序,但两者都不能工作。我也尝试过做.excludeSwitches(['enable-automation']),这也没有帮助。

这让我想,也许登录页面可以检测到我是在一个自动化环境中运行的。我尝试过这样的解决方案,它可以隐藏应用程序在web驱动程序中运行的情况:网站能检测到什么时候你使用selenium和色度驱动器吗?

我还查看了User-Agent,以确定这是否是问题所在,但我发现它与我的普通铬一是完全相同的。

所有这些都没有起作用,这让我陷入困境。我见过一些解决方案,这些解决方案说要使用从正常安装的chrome中创建的用户配置文件,但这对我的用例不起作用。

有人找到解决办法了吗?我找了好几个小时,空手而归.

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

代码语言:javascript
运行
复制
    "puppeteer",
    "puppeteer-extra",
    "puppeteer-extra-plugin-stealth"

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

代码语言:javascript
运行
复制
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();
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-02-20 21:46:02

下面的内容也适用于我: 1.尝试用google帐户登录堆栈溢出;2.登录后,转到电子邮件

这是解决办法

代码语言:javascript
运行
复制
     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");

谢谢

票数 9
EN

Stack Overflow用户

发布于 2020-03-11 11:20:14

经过几个小时的尝试和错误,我刚刚尝试了一些对我有用的东西。

args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]添加到我的配置中解决了这个问题。

后来我意识到,这并不是帮助我的原因,因为我尝试了一封不同的电子邮件,但它并没有起作用。经过一些观察后,我想出了另一种方法,并对此进行了试验和测试。

使用自动化

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

在连续做了一整天(大约24小时)之后,尝试直接自动登录gmail (或任何你想访问的Google应用程序).我至少让另外两个人成功地做了这件事。PS -您可能需要继续进行堆栈溢出登录,直到您至少得到一个captcha请求,因为我们都经历了这个阶段。

票数 3
EN

Stack Overflow用户

发布于 2020-02-03 14:46:01

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59514049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档