我正试图用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驱动程序,但两者都不能工作。我也尝试过做.excludeSwitches(['enable-automation']),这也没有帮助。
这让我想,也许登录页面可以检测到我是在一个自动化环境中运行的。我尝试过这样的解决方案,它可以隐藏应用程序在web驱动程序中运行的情况:网站能检测到什么时候你使用selenium和色度驱动器吗?
我还查看了User-Agent,以确定这是否是问题所在,但我发现它与我的普通铬一是完全相同的。
所有这些都没有起作用,这让我陷入困境。我见过一些解决方案,这些解决方案说要使用从正常安装的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();
}发布于 2020-05-01 15:03:54
以下是对我起作用的东西:
我正在使用Puppeteer,但我敢打赌,对于任何自动脚本,它都是一样的。
您必须有一个userDataDirectory,以便浏览器可以使用相同的存储信息。
您必须首先使用headless: false运行脚本,这样才能打开浏览器。如果您尝试在当前选项卡上登录(自动导航的选项卡),那么在每次登录尝试时都会得到该错误。
诀窍(对我)是打开一个新的选项卡,手动导航,再试一次。
下次运行脚本时,不需要登录。
https://stackoverflow.com/questions/59514049
复制相似问题