Eu tenho um serviço Selenium que precisa fazer login na minha conta do Gmail como o primeiro passo. Essa funcionalidade estava funcionando há algumas semanas, mas de repente o logon começa a falhar e estou vendo esse erro no navegador, tentei nos drivers Chrome e Firefox no selênio -
Este erro ocorre após o serviço selênio inserir o email, a senha e clicar no botão de login. Um erro semelhante também foi relatado no Fórum de suporte do Google aqui - https://support.google.com/accounts/thread/10916318?hl=en , eles disseram que "o Google parece ter introduzido a detecção de ferramentas de automação no fluxo de login!" mas não há solução neste segmento.
Alguns outros detalhes que podem ser úteis
- Não consigo fazer login manualmente nas Contas do Google nos navegadores
abertos pelo Selenium. - Mas consigo fazer login manualmente nessas contas no aplicativo Google Chrome.
Deixe-me saber se você precisa dar uma olhada no código, vou publicá-lo aqui. Desde já, obrigado!
Edite Adicionando código de amostra para referência.
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()));
}
}
Respostas:
Alternar "Permitir acesso menos seguro a aplicativos"
Há uma configuração em sua conta que você pode alternar que pode ajudar nisso. É o "Permitir acesso menos seguro a aplicativos". Você poderá acessar o link abaixo para alternar essa configuração se já estiver conectado à conta do Gmail que deseja modificar.
Link para alterar a configuração na conta do Google: https://myaccount.google.com/lesssecureapps
Mais informações (fonte): https://support.google.com/accounts/answer/6010255
fonte
Eu apenas tentei algo que funcionou para mim depois de várias horas de tentativa e erro.
A adição
args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]
à minha configuração resolveu o problema.Percebi depois que não foi isso que me ajudou, pois tentei com um email diferente e não funcionou. Após algumas observações, descobri outra coisa e isso foi tentado e testado.
Usando automação :
Vá para https://stackoverflow.com/users/login Selecione Faça login com a Estratégia do Google Digite o nome de usuário e a senha do Google Faça login no Stackoverflow Vá para https://gmail.com (ou qualquer outro aplicativo do Google que você deseja acessar)
Depois de fazer isso consistentemente por um dia inteiro (cerca de 24 horas), tente automatizar seu login diretamente no Gmail (ou em qualquer aplicativo do Google que você deseja acessar) diretamente ... Já tive pelo menos duas outras pessoas fazendo isso com sucesso. PS - Você pode continuar com o login do stackoverflow até receber pelo menos uma solicitação de captcha, pois todos nós passamos por essa fase também.
fonte
Esse problema ocorreu devido ao perfil de selênio cromado. Crie um novo perfil chrome e faça login nele com o ID de email com o qual você estava enfrentando o problema. Em seguida, ative a sincronização.
Com este perfil chrome instalado, posso pular as etapas de login e executar diretamente o processo principal. Use:
Chrome Options
para adicionar um perfil cromado recém-criado como argumento.Espero que este ajude você.
fonte
Verifique se sua versão do Chrome é> = 79 e, em caso afirmativo, faça o downgrade para 78. Aqui está o que eu fiz (Windows):
Desinstalei o "Chrome de varejo", que constantemente se atualizava para a versão mais recente usando truques furtivos, como os serviços do Google Chrome, que verificavam atualizações em segundo plano.
Mesmo desabilitar esses serviços do sistema não ajudou, porque o Chrome de varejo também instala eventos temporizados que reativariam esses serviços no meio da noite, para que você acordasse com uma nova versão e nem notasse até que as coisas quebrassem.
Instalei a v78 a partir do "instalador offline" encontrado aqui, que parece não instalar nenhum recurso de atualização automática "útil": https://www.neowin.net/news/google-chrome-780390470-offline-installer/
O problema acima desapareceu como mágica. Parece que a v79 possui algum anti-recurso embutido que chama de lar com informações que permitem ao Google concluir que um bot está trabalhando.
Espero que isso funcione para você ... caso contrário, você pode investir muito tempo e criar seu próprio "simulador de Chrome" corrigindo e compilando o Chromium de acordo ...
fonte
C:\Users\USERNAME\AppData\Local\Google\Chrome\Application
antes de iniciar o chrome. Se houver um arquivonew_chrome.exe
e / ou uma pasta nomeada80.*
(ou superior quando você ler isso), a atualização automática forçada será acionada. Excluanew_chrome.exe
e iniciechrome.exe
. Seria trivial escrever um arquivo em lotes excluídonew_chrome.exe
antes de iniciarchrome.exe
.