Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Como automatizar login e burlar captcha usando Selenium Grid no Ubuntu

#selenium; #automação; #ubuntu
@CanalQb

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.

@CanalQb

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.

Carteiras Seguras

Exemplos de wallets seguras para criptomoedas.

--- Quer saber mais? Acompanhe o @CanalQb no YouTube para tutoriais atualizados!

إرسال تعليق

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo