我正在尝试使用硒登录google,并且不断收到错误消息“此浏览器或应用可能不安全。”
我用来登录的功能是:
std::vector
与以下问题相同 Unable to log into google account in selenium chrome driver 和 couldn't sign you in this browser or app may be insecure (python selenium chrome 78)
我尝试同时使用chrome和firefox Web驱动程序,但均无法正常工作。
我也尝试过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);
}
,但也无济于事。
这使我认为登录页面也许可以检测到我在自动化环境中运行。 我尝试过这种解决方案,该解决方案隐藏了该应用程序正在Web驱动程序中运行:Can a website detect when you are using selenium with chromedriver?
我还研究了.excludeSwitches(['enable-automation'])
来确定是否是问题所在,但是发现它与我的常规Chrome完全相同。
所有这些都没有奏效,这使我陷入困境。我见过一些解决方案,说要使用您在普通的chrome安装中已经创建的用户个人资料,但这不适用于我的用例。
有人找到解决方案吗?我一直在寻找时间,空手而归。
答案 0 :(得分:9)
以下内容同样适用于我: 1.尝试使用您的Google帐户登录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");
谢谢
答案 1 :(得分:3)
经过数小时的反复试验,我只是尝试了一些对我有用的东西。
将args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]
添加到我的配置中解决了该问题。
后来我意识到,这不是帮助我的原因,因为我尝试使用另一封电子邮件,但没有用。经过一些观察,我发现其他问题,并且已经尝试和测试了。
使用自动化:
转到https://stackoverflow.com/users/login 选择使用Google策略登录 输入Google用户名和密码 登录到Stackoverflow 转到https://gmail.com(或您要访问的任何Google应用)
在一整天(大约24小时)内持续进行此操作后,尝试直接将您的登录信息直接自动自动直接登录gmail(或您要访问的任何Google应用)...我至少有两个人这样做成功。 PS-您可能要继续进行stackoverflow登录,直到我们都经历了该阶段为止,至少收到验证码请求。
答案 2 :(得分:1)
此错误消息...
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 无法验证浏览上下文,即 Browser 会话。
@Raphael Schaad在文章"This browser or app may not be secure" error when trying to sign in with Google on desktop apps中提到,如果用户可以使用其他Google帐户正常登录同一应用程序,则问题必须出在特定的帐户上。可能的原因是,这是用户使用双因素身份验证的唯一帐户。
答案 3 :(得分:0)
一个对我有用的解决方法是在由网络驱动程序启动的Chrome实例中创建一个Google帐户。使用这个新创建的帐户对我有用,但是我不能说出它与其他Google帐户之间到底有什么区别。
答案 4 :(得分:0)
这对我有用:
我正在使用Puppeteer,但我敢打赌,对于任何自动化脚本来说都是一样的。
您必须具有userDataDirectory,以便浏览器可以使用相同的存储信息。
您必须首先使用headless: false
运行脚本,以便打开浏览器。如果您尝试在当前标签页(自动导航的标签页)上登录,则每次尝试登录时都会收到该错误。
对我来说,诀窍是打开一个新标签页,手动导航,然后重试。
下次运行脚本时,无需登录。