我有一个Selenium服务,第一步必须登录到我的Gmail帐户。几个星期前,此功能就已经起作用了,但是突然登录失败,我在浏览器中看到此错误,并在硒中的Chrome和Firefox驱动程序中都尝试过-
此错误是在硒服务插入电子邮件,密码并单击登录按钮之后发生的。 Google支持论坛(https://support.google.com/accounts/thread/10916318?hl=en)也报告了类似的错误,他们说:“ Google似乎在其登录流程中引入了自动化工具检测功能!”但是这个线程没有解决方案。
一些其他有用的细节-
如果您需要查看代码,请告诉我,我将在此处发布。 预先感谢!
答案 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。