Tengo un servicio Selenium que tiene que iniciar sesión en mi cuenta de gmail como primer paso. Esta funcionalidad funcionaba hace un par de semanas, pero de repente el inicio de sesión comienza a fallar y veo este error en el navegador, probé los controladores de Chrome y Firefox en selenio.
Este error se produce después de que el servicio de selenio inserta el correo electrónico, la contraseña y hace clic en el botón de inicio de sesión. También se informó un error similar en el foro de soporte de Google aquí: https://support.google.com/accounts/thread/10916318?hl=es . Dijeron que "¡Google parece haber introducido la detección de herramientas de automatización en su flujo de inicio de sesión!" pero no hay solución en este hilo.
Algunos otros detalles que pueden ser útiles
- No puedo iniciar sesión manualmente en las cuentas de Google en los navegadores
abiertos por Selenium. - Pero puedo iniciar sesión manualmente en estas cuentas en la aplicación Google Chrome.
Avíseme si necesita echar un vistazo al código, lo publicaré aquí. ¡Gracias por adelantado!
Editar Agregar código de muestra para referir.
public void loginGoogleAccount(String emailId, String password) throws Exception {
ChromeOptions options = new ChromeOptions();
options.addArguments("--profile-directory=Default");
options.addArguments("--whitelisted-ips");
options.addArguments("--start-maximized");
options.addArguments("--disable-extensions");
options.addArguments("--disable-plugins-discovery");
WebDriver webDriver = new ChromeDriver(options);
webDriver.navigate().to("https://accounts.google.com");
Thread.sleep(3000);
try {
WebElement email = webDriver.findElement(By.xpath("//input[@type='email']"));
email.sendKeys(emailId);
Thread.sleep(1000);
WebElement emailNext = webDriver.findElement(By.id("identifierNext"));
emailNext.click();
Thread.sleep(1000);
WebDriverWait wait = new WebDriverWait(webDriver, 60);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("identifierNext")));
Thread.sleep(3000);
WebElement passwordElement = webDriver.findElement(By.xpath("//input[@type='password']"));
passwordElement.sendKeys(password);
Thread.sleep(1000);
WebElement passwordNext = webDriver.findElement(By.id("passwordNext"));
passwordNext.click();
} catch (Exception e) {
LOGGER.info(String.format("No email/password field available or it is already logged in: [%s]: ",
e.getMessage()));
}
}
Respuestas:
Alternar "Permitir acceso a aplicaciones menos seguras"
Hay una configuración en su cuenta que puede alternar que puede ayudar con esto. Es el "Permitir acceso a aplicaciones menos seguras". Debería poder visitar el siguiente enlace para alternar esa configuración si ya ha iniciado sesión en la cuenta de Gmail que desea modificar.
Enlace para cambiar la configuración en la cuenta de Google: https://myaccount.google.com/lesssecureapps
Más información (fuente): https://support.google.com/accounts/answer/6010255
fuente
Acabo de probar algo que funcionó para mí después de varias horas de prueba y error.
Agregar
args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]
a mi configuración resolvió el problema.Más tarde me di cuenta de que esto no fue lo que me ayudó, ya que intenté con un correo electrónico diferente y no funcionó. Después de algunas observaciones, descubrí algo más y esto ha sido probado y probado.
Usando la automatización :
Vaya a https://stackoverflow.com/users/login Seleccione Iniciar sesión con Google Strategy Ingrese el nombre de usuario y la contraseña de Google Inicie sesión en Stackoverflow Vaya a https://gmail.com (o cualquier aplicación de Google a la que desee acceder)
Después de hacer esto de manera constante durante todo un día (aproximadamente 24 horas), intente automatizar su inicio de sesión directamente en gmail (o cualquier aplicación de Google a la que desee acceder) directamente ... He tenido al menos otras dos personas que lo han hecho con éxito. PD: es posible que desee continuar con el inicio de sesión de stackoverflow hasta que al menos reciba una solicitud de captcha, ya que todos pasamos por esa fase también.
fuente
Este problema se debió al perfil de cromo de selenio. Cree un nuevo perfil de Chrome e inicie sesión con el ID de correo electrónico con el que estaba enfrentando el problema. Luego encienda la sincronización.
Con este perfil de Chrome en su lugar, puedo omitir los pasos de inicio de sesión y hacer directamente el proceso principal. Uso:
Chrome Options
para agregar un perfil de Chrome recién creado como argumento.Espero que este te ayude.
fuente
Comprueba si tu versión de Chrome es> = 79 y, de ser así, baja a 78. Esto es lo que hice (Windows):
Desinstalé el "Chrome minorista" que constantemente se actualizaba a la última versión utilizando trucos engañosos como los servicios de Google Chrome que buscarían actualizaciones en segundo plano.
Incluso deshabilitar esos servicios del sistema no ayudó porque Chrome minorista también instala eventos de temporizador que volverían a habilitar dichos servicios en el medio de la noche, por lo que se despertaría con una nueva versión y ni siquiera se daría cuenta hasta que las cosas se rompan.
Instalé v78 desde el "instalador sin conexión" que se encuentra aquí, que no parece instalar ninguna función de actualización automática "útil": https://www.neowin.net/news/google-chrome-780390470-offline-installer/
El problema anterior desapareció como magia. Parece que v79 tiene una función anti-característica incorporada que llama a casa con información que le permite a Google concluir que un bot está funcionando.
Espero que esto funcione para usted ... si no, podría invertir mucho tiempo y crear su propio "simulador de Chrome" parcheando y compilando Chromium en consecuencia ...
fuente
C:\Users\USERNAME\AppData\Local\Google\Chrome\Application
antes de iniciar Chrome. Si hay un archivonew_chrome.exe
y / o una carpeta nombrada80.*
(o superior en el momento en que lee esto), entonces ha activado su actualización automática forzada. Eliminarnew_chrome.exe
, luego iniciarchrome.exe
. Sería trivial escribir un archivo por lotes que se eliminenew_chrome.exe
antes de comenzarchrome.exe
.