登录Gmail帐户失败(Selenium Automation)

时间:2019-12-30 16:36:19

标签: selenium google-chrome selenium-webdriver

我有一个Selenium服务,第一步必须登录到我的Gmail帐户。几个星期前,此功能就已经起作用了,但是突然登录失败,我在浏览器中看到此错误,并在硒中的Chrome和Firefox驱动程序中都尝试过-

enter image description here

此错误是在硒服务插入电子邮件,密码并单击登录按钮之后发生的。 Google支持论坛(https://support.google.com/accounts/thread/10916318?hl=en)也报告了类似的错误,他们说:“ Google似乎在其登录流程中引入了自动化工具检测功能!”但是这个线程没有解决方案。

一些其他有用的细节-

  • 我无法在浏览器中手动登录Google帐户
    由Selenium打开。
  • 但是我可以在Google中手动登录这些帐户 Chrome应用程序。

如果您需要查看代码,请告诉我,我将在此处发布。 预先感谢!

5 个答案:

答案 0 :(得分:5)

切换“允许较少的安全应用访问权限”
您的帐户上有一个设置可以切换,这可能会有所帮助。这是“允许不太安全的应用程序访问”。如果您已经登录要修改的gmail帐户,则应该可以访问下面的链接来切换该设置。

链接以更改Google帐户上的设置: https://myaccount.google.com/lesssecureapps

其他信息(来源): https://support.google.com/accounts/answer/6010255

答案 1 :(得分:4)

经过数小时的反复试验,我只是尝试了一些对我有用的东西。

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)

此问题是由于硒铬配置文件所致。创建一个新的chrome配置文件,并使用您面临问题的电子邮件ID登录。然后打开同步。

有了这个chrome配置文件,我可以跳过登录步骤,直接执行主要过程。使用:Chrome Options将新创建的chrome配置文件添加为参数。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setBinary("Binary path of the Chrome");

希望这对您有所帮助。

答案 3 :(得分:1)

检查您的Chrome版本是否> = 79,如果是,则降级为78。这是我的操作(Windows):

我卸载了“零售Chrome”,并使用诸如Google Chrome服务之类的狡猾技巧不断升级自身到最新版本,这些服务会在后台检查更新。

即使禁用这些系统服务也无济于事,因为零售版Chrome还安装了计时器事件,这些事件将在深夜重新启用该服务,因此您会醒来一个新版本,甚至在事情发生之前都不会注意到休息。

我从此处找到的“离线安装程序”中安装了v78,它似乎未安装任何“有用的”自动升级功能:https://www.neowin.net/news/google-chrome-780390470-offline-installer/

以上问题像魔术般消失了。 v79似乎内置了一些反功能,可以通过返回信息来使Google得出结论,认为该机器人正在起作用。

希望这对您有用...否则,您可以花费大量时间并通过相应地修补和编译Chromium来创建自己的“ Chrome模拟器” ...

答案 4 :(得分:0)

这对我有用:

from selenium import webdriver 
from time import sleep

username=raw_input("username: ") 
password=raw_input("password: ") 
driver=webdriver.Chrome('...')           
driver.get('https://stackoverflow.com/users/signup') 
sleep(3) 
driver.find_element_by_xpath('//*[@id="openid-buttons"]/button[1]').click() 
driver.find_element_by_id('identifierId').send_keys(username) 
driver.find_element_by_id('identifierNext').click() 
sleep(3) 
driver.find_element_by_name('password').send_keys(password) 
driver.find_element_by_id('passwordNext').click() 
sleep(2) 
driver.get('https://mail.google.com/mail/u/0/#inbox')

我找到了类似的解决方案here