//
Python ReCaptcha v.2
reCaptcha

 

Como resolver o ReCaptcha v2 em Python usando Selenium & CapMonster Cloud

Se você quiser escrever um script para resolver automaticamente diferentes tipos de captchas em Python, primeiro precisará fazer o download da versão mais recente do Python no site oficial.

 

Próximos passos: 

  • Crie uma pasta em um local conveniente, vá para o VS Code e adicione essa pasta ao nosso novo projeto (Arquivo - Abrir pasta).

  • Para adicionar a dependência do Selenium, acesse o site https://www.selenium.dev/downloads/, selecione python, copie a linha acima pip install selenium, abra o terminal em nosso projeto (View - Terminal), cole essa linha lá, pressione Enter e aguarde as instalações de dependência.

  • Agora você precisa adicionar a biblioteca do CapMonster Cloud, você pode encontrar todas as informações sobre ela aqui - https://pypi.org/project/capmonstercloudclient/. Copie a linha pip install capmonstercloudclient e adicione-a ao projeto pelo terminal da mesma forma. Você pode verificar todas as dependências instaladas usando o comando pip list.

  • Crie um novo arquivo chamado ".env" e insira os seguintes valores nele:

 API_KEY="YOUR_API_KEY"
	WEBSITE_KEY="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
	WEBSITE_URL="https://google.com/recaptcha/api2/demo"

 

Por exemplo, pegamos o site google.com/recaptcha/api2/demo, ele tem um captcha que vamos resolver usando o CapMonster Cloud, há um identificador de sitekey para ele. API_KEY é sua chave de API do CapMonster Cloud, insira-a na linha apropriada e salve-a no arquivo ".env".

 

  • Crie um arquivo "main.py" e importe todos os módulos, dependências e configurações de variáveis de ambiente necessários do arquivo ".env" (dotenvdeve estar instalado em suas dependências):

import asyncio
from selenium import webdriver
from selenium.webdriver.common.by import By
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2ProxylessRequest
from dotenv import load_dotenv
importar os

load_dotenv()

API_KEY = os.getenv("API_KEY")
WEBSITE_URL = os.getenv("WEBSITE_URL")
WEBSITE_KEY = os.getenv("WEBSITE_KEY")

 

  • Em seguida, escrevemos o código para iniciar o navegador (em nosso exemplo, usamos o webdriver.Chrome, você pode ter um driver diferente, não se esqueça disso!), criar uma tarefa para resolver o captcha e inserir o resultado no site de destino: 
client_options = ClientOptions(api_key=API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)

async def solve_captcha():
    # Criando um tipo de solicitação de solução reCAPTCHA V2 Proxyless
    recaptcha_request = RecaptchaV2ProxylessRequest(websiteUrl=WEBSITE_URL, websiteKey=WEBSITE_KEY)
    result = await cap_monster_client.solve_captcha(recaptcha_request)
    return result['gRecaptchaResponse']

async def main():
     try:
         # Executando o navegador Chrome com o Selenium
 navegador = webdriver.Chrome()

        # Abrindo um site
       browser.get(WEBSITE_URL)
 Imprimir('Página aberta, aguardando o carregamento do reCAPTCHA...')

        # Aguarde um pouco para que o CAPTCHA seja carregado (você pode configurar a duração)
        aguarde asyncio.sleep(5)

 Solução reCAPTCHA usando o CapMonster
       responses = await solve_captcha()
        print('Resposta do CapMonster:', responses)

        # Inserção de um reCAPTCHA resolvido em uma página
       browser.execute_script(f'document.getElementById("g-recaptcha-response").innerHTML = "{responses}";')
 Imprimir('O resultado foi inserido na página!')

         # Executar ações adicionais, se necessário (por exemplo, enviar um formulário)
       browser.find_element(By.ID, 'recaptcha-demo-submit').click()
 Imprimir('Formulário enviado!')

        # Aguarde um pouco para observar as alterações
        aguarde asyncio.sleep(10)

     exceto Exception as e:
        print('Error:', e)
     finally:
         # Fechando o navegador
        browser.quit()

# Execução de um loop de eventos assíncrono
asyncio.run(main())

 

 

Código completo: 

import asyncio
from selenium import webdriver
from selenium.webdriver.common.by import By
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2ProxylessRequest
from dotenv import load_dotenv
importar os

# Carregando variáveis de ambiente de um arquivo .env
load_dotenv()

API_KEY = os.getenv("API_KEY")
WEBSITE_URL = os.getenv("WEBSITE_URL")
WEBSITE_KEY = os.getenv("WEBSITE_KEY")

# Configuração do cliente CapMonster
client_options = ClientOptions(api_key=API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)

async def solve_captcha():
    # Criando um tipo de solicitação de solução reCAPTCHA V2 Proxyless
    recaptcha_request = RecaptchaV2ProxylessRequest(websiteUrl=WEBSITE_URL, websiteKey=WEBSITE_KEY)
    result = await cap_monster_client.solve_captcha(recaptcha_request)
    return result['gRecaptchaResponse']

async def main():
     try:
         # Executando o navegador Chrome com o Selenium
 navegador = webdriver.Chrome()

        # Abrindo um site
       browser.get(WEBSITE_URL)
 Imprimir('Página aberta, aguardando o carregamento do reCAPTCHA...')

        # Aguarde um pouco para que o CAPTCHA seja carregado (você pode configurar a duração)
        aguarde asyncio.sleep(5)

 Solução reCAPTCHA usando o CapMonster
       responses = await solve_captcha()
        print('Resposta do CapMonster:', responses)

        # Inserção de um reCAPTCHA resolvido em uma página
       browser.execute_script(f'document.getElementById("g-recaptcha-response").innerHTML = "{responses}";')
 Imprimir('O resultado foi inserido na página!')

         # Realização de ações adicionais, se necessário (por exemplo, envio de um formulário)
       browser.find_element(By.ID, 'recaptcha-demo-submit').click()
 Imprimir('Formulário enviado!')

        # Aguarde um pouco para observar as alterações
        aguarde asyncio.sleep(10)

     exceto Exception as e:
        print('Error:', e)
     finally:
         # Fechando o navegador
        browser.quit()

# Execução de um loop de eventos assíncrono
asyncio.run(main())

 

 

Explicação do código:

 

load_dotenv() é usado para carregar variáveis de ambiente do arquivo .env.

os.getenv("API_KEY"), os.getenv("WEBSITE_URL"), e os.getenv("WEBSITE_KEY") são usados para obter os valores das variáveis de ambiente correspondentes do arquivo .env.

 

ClientOptions(api_key=API_KEY) cria um objeto ClientOptions com a chave de API fornecida para o CapMonster.

 

CapMonsterClient(options=client_options) cria um cliente CapMonster com as opções fornecidas.

 

async def solve_captcha(): essa função cria uma solicitação de solução CAPTCHA do tipo reCAPTCHA V2 Proxyless usando o CapMonster.

Retorna um valor gRecaptchaResponse que representa a solução CAPTCHA.

 

async def main(): função assíncrona principal que executa o script principal.

Inicia o navegador Chrome usando o Selenium, abre o site e aguarda o carregamento do reCAPTCHA.

Chamada solve_captcha() para resolver um CAPTCHA usando o CapMonster.

Insere um CAPTCHA resolvido em uma página, executa ações adicionais (como o envio de um formulário) e aguarda as alterações.

Captura e exibe um erro se algo der errado.

Fecha o navegador depois de concluir todas as ações.

 

asyncio.run(main()) executa a função assíncrona main() usando asyncio.run(), que permite que você execute código assíncrono no estilo de script.

 

Vamos executar nosso script. Se aparecer algum erro, use Run e Debug. Se tudo estiver correto, você deverá obter o seguinte resultado:

none provided

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.