
Automatizando Login e Quebra de Captcha com Selenium Grid no Ubuntu
Olá, amigos! No último post, mostrei como controlar uma página remotamente. Agora, vamos entender por que isso é útil.
Se você está conhecendo o Selenium Server agora, saiba que ele é uma poderosa ferramenta para processos de automação. Neste artigo, vou ensinar como automatizar o login em um site que usa captcha, um desafio comum em automações.
Desafios da automação em sistemas Linux sem interface gráfica, como Ubuntu 18.04
Imagine que você tem um script que precisa realizar login em uma página e, em seguida, gerenciar uma automação. Em sistemas com interface gráfica, como Windows, isso é simples. Porém, em servidores Linux sem interface gráfica, como o Ubuntu 18.04, o processo exige abordagens específicas para funcionar.
Configurando o Selenium Grid para automação remota
A primeira parte da configuração do Selenium Grid está explicada detalhadamente neste link. Certifique-se que o Selenium Grid está rodando corretamente antes de continuar.
Usando o site Miningness para teste de automação com captcha
Como exemplo, vamos usar a mineradora Miningness, que possui uma tela inicial de login com captcha, perfeito para demonstrar nossa técnica.
Faça seu cadastro para acompanhar o exemplo. Lembre-se que a disponibilidade do site pode variar, então recomendamos estudar o código para aplicar em outras plataformas similares.
Passo 1: Importando módulos essenciais em Python
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options
Passo 2: Configurando o acesso remoto ao Selenium Grid
# Configuração para acesso remoto ao Selenium Grid chrome_options_remoto = Options() chrome_options_remoto.add_argument("--disable-dev-shm-usage") driver_remoto = webdriver.Remote( command_executor="http://192.168.0.11:4444/wd/hub", options=chrome_options_remoto )
Note que o IP 192.168.0.11
é o IP do computador onde está rodando o Selenium Server. Ajuste conforme seu ambiente.
Passo 3: Realizando login e aguardando a resolução manual do captcha
driver_remoto.get("https://miningness.com/login") time.sleep(1) driver_remoto.find_element(By.NAME, "email").send_keys('seu_email') driver_remoto.find_element(By.NAME, "password").send_keys('sua_senha') captcha_resolvido = False while not captcha_resolvido: captcha_resolvido = input("\tResolva o captcha e digite 's' para continuar: ").lower() == 's' try: sign_in_button = driver_remoto.find_element(By.XPATH, "//button[@type='submit' and contains(@class, 'btn--yellow')]") sign_in_button.click() except Exception: pass
O script acima preenche o login e senha, então aguarda você resolver o captcha manualmente antes de continuar a automação.
Terminal Linux com Putty em fundo preto e site Miningness aberto com captcha resolvido.
Passo 4: Capturando cookies e transferindo para o WebDriver local
cookies_remoto = driver_remoto.get_cookies() print(cookies_remoto) time.sleep(1) driver_remoto.quit()
Esses cookies serão usados para autenticar a sessão localmente.
Passo 5: Preparando o WebDriver local no Ubuntu sem interface gráfica
chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") driver_local = webdriver.Chrome(options=chrome_options)
Essas opções permitem rodar o navegador em modo headless, sem interface gráfica, o que é ideal para servidores Linux.
- --headless: Executa o navegador sem interface visual.
- --no-sandbox: Desativa o sandbox para evitar problemas de permissão.
- --disable-dev-shm-usage: Evita problemas com memória compartilhada em ambientes restritos.
Se quiser aprender a instalar ChromeDriver, Google Chrome ou Brave no Ubuntu, confira outros posts do blog.
Passo 6: Alimentando cookies no WebDriver local para manter sessão autenticada
driver_local.get("https://miningness.com/") time.sleep(1) driver_local.delete_all_cookies() driver_local.get("https://miningness.com/") driver_local.delete_all_cookies() cookies_locais = {} for cookie in cookies_remoto: nome_cookie = cookie['name'] if nome_cookie in cookies_locais: cookies_locais[nome_cookie]['value'] = cookie['value'] else: cookies_locais[nome_cookie] = cookie driver_local.delete_all_cookies() for cookie in cookies_locais.values(): cookie_dict = { 'name': cookie['name'], 'value': cookie['value'], 'path': cookie.get('path', '/'), 'domain': cookie.get('domain', ''), 'secure': cookie.get('secure', False), 'httpOnly': cookie.get('httpOnly', False), 'expiry': cookie.get('expiry', None) } driver_local.add_cookie(cookie_dict) driver_local.get("https://miningness.com/user/profile") time.sleep(1)
Esses passos garantem que o navegador local tenha a sessão autenticada usando os cookies do Selenium Grid remoto.
Passo 7: Validando automação e finalizando script
driver_local.save_screenshot("screenshot.png") print(driver_local.get_cookies()) time.sleep(1) driver_local.quit()
Quando o screenshot for salvo corretamente, seu script está funcionando, e você poderá adicionar outras automações no servidor.
Script completo para download
Segue o script completo para facilitar sua automação: https://cb.run/A19l
Recomendações e alertas importantes para automação e investimento
Lembre-se sempre de analisar cuidadosamente qualquer plataforma de investimento ou mineração antes de aplicar recursos financeiros. A automação aqui apresentada é para fins educacionais e deve ser usada com responsabilidade.
Para segurança, utilize wallets confiáveis e compatíveis com as moedas que pretende minerar ou investir. Alguns exemplos de wallets seguras incluem MetaMask, Trust Wallet e Exodus.
Exemplos de wallets seguras para criptomoedas.