Como resolver o ReCaptcha v3 em Python usando Selenium & CapMonster Cloud
Para resolver esse tipo de captcha, crie um arquivo ".env" com os seguintes valores:
CAPMONSTER_API_KEY=YOUR_API_KEY
WEBSITE_KEY=6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob
WEBSITE_URL=https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta
Instale todas as dependências necessárias via pip install (consulte Python ReCaptcha v.2), importe-os em seu projeto e envie a tarefa de captcha para o servidor do CapMonster Cloud:
import asyncio
import os
from dotenv import load_dotenv
from selenium import webdriver
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV3ProxylessRequest
from selenium.webdriver.common.by import By
load_dotenv()
CAPMONSTER_API_KEY = os.getenv('CAPMONSTER_API_KEY')
WEBSITE_KEY = os.getenv('WEBSITE_KEY')
WEBSITE_URL = os.getenv('WEBSITE_URL')
async def solve_recaptcha():
# Inicialização do cliente CapMonster
client_options = ClientOptions(api_key=CAPMONSTER_API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)
Inicializando o Selenium WebDriver
options = webdriver.ChromeOptions()
options.headless = False
browser = webdriver.Chrome(options=options)
Imprimir('Navegador inicializado!')
try:
# Ir para a página especificada
browser.get(WEBSITE_URL)
print('O navegador mudou para a página com captcha!')
# Criar uma solicitação para resolver um tipo reCAPTCHA V3 Proxyless
recaptcha_request = RecaptchaV3ProxylessRequest(
websiteUrl=WEBSITE_URL,
websiteKey=WEBSITE_KEY,
action='verify',
min_score=0.7,
)
Solução do reCAPTCHA usando o CapMonster
task_result = await cap_monster_client.solve_captcha(recaptcha_request)
print('reCAPTCHA V3 solved:', task_result)
Instalação do agente do usuário (opcional)
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/120.0.0.0 Safari/537.36'
browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent})
Inserção do resultado na página
script = f'document.querySelector(\'#g-recaptcha-response-100000\').style.display = "block";'
script += f'document.querySelector(\'#g-recaptcha-response-100000\').style.visibility = "visible";'
script += f'document.querySelector(\'#g-recaptcha-response-100000\').value = "{task_result}";'
browser.execute_script(script)
Imprimir('O resultado foi inserido na página!')
# Clique no botão para verificar
submit_button = browser.find_element(By.ID, 'v3_submit')
submit_button.click()
Imprimir(''O botão "Verificar" foi pressionado!')
# Pausa de 10 segundos
aguarde asyncio.sleep(10)
finalmente:
# Fechando o navegador
browser.quit()
# Executar uma função assíncrona para resolver o reCAPTCHA
asyncio.run(solve_recaptcha())
Explicação do código:
Carregando variáveis de ambiente: load_dotenv(). Carregamento de variáveis de ambiente: load_dotenv(): Essa função carrega os valores das variáveis de ambiente do arquivo .env e os torna disponíveis para o programa.
Inicializando variáveis do ambiente: CAPMONSTER_API_KEY = os.getenv('CAPMONSTER_API_KEY'). Aqui, obtemos o valor da variável CAPMONSTER_API_KEY a partir das variáveis de ambiente.
WEBSITE_KEY = os.getenv('WEBSITE_KEY'): de forma semelhante, obtemos o valor da variável WEBSITE_KEY.
WEBSITE_URL = os.getenv('WEBSITE_URL'): obtemos o valor da variável WEBSITE_URL.
async def solve_recaptcha():declarando a função assíncrona solve_recaptcha.
Inicializando o cliente CapMonster e o Selenium WebDriver: client_options = ClientOptions(api_key=CAPMONSTER_API_KEY). Criando um objeto com opções para inicializar o cliente CapMonster.
cap_monster_client = CapMonsterClient(options=client_options): inicialização do cliente CapMonster usando opções.
options = webdriver.ChromeOptions(): criando um objeto de opções para configurar o driver da Web do Chrome.
options.headless = False: configuração do modo de visibilidade do navegador (False - visível, True - invisível).
browser = webdriver.Chrome(options=options): inicializando o driver da Web do Chrome usando opções.
Trabalhando com uma página da Web: browser.get(WEBSITE_URL). Ir para a página da Web especificada.
recaptcha_request = RecaptchaV3ProxylessRequest(...): criando um objeto de solicitação para a solução reCAPTCHA V3 Proxyless.
task_result = await cap_monster_client.solve_captcha(recaptcha_request): resolução de reCAPTCHA usando o CapMonster.
user_agent = '...': Configuração do agente do usuário (uma string que identifica o navegador e a plataforma).
browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent}): Instalação de um agente de usuário usando o protocolo Chrome DevTools.
script = '...': Criação de uma string JavaScript que insere a solução na página.
browser.execute_script(script): execução de código JavaScript no contexto da página atual do navegador.
submit_button = browser.find_element(By.ID, 'v3_submit'): busca de um elemento HTML por seu ID na página.
submit_button.click(): simulação de um clique em um botão encontrado.
Conclusão do trabalho: await asyncio.sleep(10). Pausa assíncrona de 10 segundos.
browser.quit(): fecha o driver da Web e as janelas do navegador.
Executando uma função assíncrona: asyncio.run(solve_recaptcha()). Execução da função assíncrona solve_recaptcha em um ambiente assíncrono.
Execução do script e execução bem-sucedida:

Note: Gostaríamos de lembrá-lo de que o produto é usado para automatizar testes em seus próprios sites e em sites aos quais você tem acesso legal.