Quebrar CAPTCHA com Python – Automação com Anti-Captcha

Aprenda a quebrar CAPTCHA com Python usando Selenium e Anti-Captcha. Veja passo a passo como automatizar a resolução de CAPTCHAs online!

Resposta rápida: quebrar um CAPTCHA com Python é automatizar a resolução por um serviço externo, e não decifrar a imagem no seu código. O Selenium abre a página e lê o sitekey, a biblioteca do Anti-Captcha envia esse sitekey junto com a URL, devolve o token da solução e o Selenium injeta o token no formulário antes de enviar. O serviço é pago por resolução.

Como Quebrar CAPTCHA com Python

Você já se deparou com aquele desafio de selecionar imagens ou marcar uma caixinha “não sou um robô”? Pois é, esses são os CAPTCHAs, ferramentas de segurança que servem para identificar acessos automatizados.

Mas, e se você quisesse automatizar esse processo de forma educativa? Neste artigo vamos te mostrar como quebrar CAPTCHAs com Python, utilizando a biblioteca Selenium junto ao serviço Anti-Captcha.

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

O que é CAPTCHA e por que quebrar?

O CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) é usado para evitar que robôs automatizados acessem páginas.

No entanto, existem situações legítimas, como testes, estudos acadêmicos ou automações corporativas, em que pode ser necessário automatizar a resolução de CAPTCHAs.

⚠️ Aviso: este conteúdo tem fins educacionais. O uso indevido é de responsabilidade do usuário

O que é o serviço Anti-Captcha

O Anti-Captcha é um serviço pago que resolve CAPTCHAs automaticamente. Ele funciona no modelo pay-per-captcha: você paga alguns centavos por cada desafio resolvido.

Esse serviço possui suporte a diversos tipos de CAPTCHA, incluindo Google reCAPTCHA V2 e V3, muito comuns em sites.

Como funciona um CAPTCHA na prática

Para poder testar esse serviço nós vamos utilizar essa ferramenta do Google que é para teste de CAPTCHA, então você pode acessar o site abaixo para poder fazer seus testes.

http://google.com/recaptcha/api2/demo

Quebrar CAPTCHA com Python

Quando você resolve um CAPTCHA em uma página, o site recebe um token de verificação (geralmente armazenado no campo g-recaptcha-response).

Quebrar CAPTCHA com Python

Você pode habilitar isso dentro da opção Inspecionar quando clica com o botão direito do mouse na página.

Lá dentro você vai selecionar onde está o CAPTCHA e vai desmarcar a caixa display, assim vai conseguir visualizar essa caixa de texto onde é inserida a “solução”.

Na página de documentação desse serviço nós vamos ter os tipos de Captcha que podem ser resolvidos, onde o nosso é o RecaptchaV2TaskProxyless.

E ao clicar no link do CAPTCHA desejado você vai ver que temos as informações de solicitação e de resposta desse CAPTCHA.

Com o Selenium, conseguimos:

  • Navegar até a página de teste
  • Capturar a chave do CAPTCHA (data-sitekey)
  • Enviar essa chave para o Anti-Captcha
  • Obter a resposta (token) e injetar no campo correto

Como instalar as bibliotecas necessárias

Lembrando que para que esse código funcione vamos instalar a biblioteca do selenium e a biblioteca do anticaptchaofficial:

Codigo
pip install selenium
pip install webdriver-manager
pip install anticaptchaofficial

Código Python para quebrar CAPTCHA

Mas, para que você não tenha que copiar o código do site nós já deixamos o código todo pronto para download!

Python
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from anticaptchaofficial.recaptchav2proxyless import *
import time
from chave import chave_api

navegador = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
link = "https://google.com/recaptcha/api2/demo"
navegador.get(link)

chave_captcha = navegador.find_element(By.ID, 'recaptcha-demo').get_attribute('data-sitekey')

solver = recaptchaV2Proxyless()
solver.set_verbose(1)
solver.set_key(chave_api)
solver.set_website_url(link)
solver.set_website_key(chave_captcha)

resposta = solver.solve_and_return_solution()

if resposta != 0:
    print(resposta)
    # preencher o campo do token do captcha
    # g-recaptcha-response
    navegador.execute_script(f"document.getElementById('g-recaptcha-response').innerHTML = '{resposta}'")
    navegador.find_element(By.ID, 'recaptcha-demo-submit').click()
else:
    print(solver.err_string)

time.sleep(100)

Esse é o código que nós vamos utilizar para quebrar o CAPTCHA utilizando o anti-captcha.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Explicação passo a passo do código

1. Configuração inicial:

  • Usamos o webdriver-manager para abrir o Chrome automaticamente.
  • Definimos a URL do site de teste de reCAPTCHA.

Na primeira parte do código nós vamos utilizar o selenium para poder navegar até o site onde vamos quebrar o CAPTCHA desejado.

2. Captura do sitekey

  • Com o Selenium, buscamos o elemento recaptcha-demo e extraímos o data-sitekey.

Em seguida nós temos que buscar a chave_captcha que vai ser dentro do próprio site, lá com o botão direito e Inspecionar.

Quebrar CAPTCHA com Python

Aqui vamos colocar o mouse até que toda a área do CAPTCHA fique selecionada. Logo acima do código que foi identificado quando colocou o mouse no CAPTCHA, você vai encontrar o data-sitekey.

Vai ficar logo acima do <iframe. Essa é a chave desse CAPTCHA específico.

Encontrando o data-sitekey do CAPTCHA
Encontrando o data-sitekey do CAPTCHA

Então com o próprio selenium ainda, nós vamos poder encontrar esse elemento data-sitekey para trazer essa informação.

3. Envio ao Anti-Captcha

  • Passamos chave da API (chave_api que você recebe ao criar conta no site)
  • Enviamos o sitekey e a URL do site.

Com o data-sitekey em mãos, vamos mandar essas informações para o solver, que é o nosso resolvedor do anti-captcha.

OBS: Aqui você deve ter notado que estamos utilizando uma variável chamada chave_api, essa chave é a chave que você recebeu no seu e-mail depois de fazer a conta no site anti-captcha.

4. Recebendo a solução e submissão automática

  • O Anti-Captcha retorna um token de resposta.
  • Esse token é inserido via execute_script() no campo g-recaptcha-response

Para finalizar nós vamos pegar a resposta desse serviço e vamos aplicá-la ao CAPTCHA, mas como fazer isso?

Da mesma maneira que fizemos para ativar aquela caixa de texto, mas agora nós vamos identificar qual é o elemento dessa caixa para fazer com que o selenium faça esse preenchimento automático.

Obtendo o id de resposta do CAPTCHA
Obtendo o id de resposta do CAPTCHA

Esse é o elemento onde vamos preencher a informação, que é onde vamos ter a resposta do CAPTCHA.

A única diferença aqui é que o selenium não consegue escrever em um elemento que ele não está vendo, então por isso vamos utilizar esse código.

Para que ele vá até a janela Console e escreva o código em java script (pois não precisa do elemento visível) para escrever a nossa resposta do CAPTCHA no campo g-recaptcha-response.

O Selenium clica no botão Submit, simulando que o CAPTCHA foi resolvido.

Pronto! Agora você já tem o código pronto para quebrar os próximos CAPTCHAS que precisar com a ajuda do serviço anti-captcha!

    Conclusão - Quebrar Qualquer CAPTCHA com Python

    Nessa aula eu te mostrei como quebrar qualquer CAPTCHA com Python utilizando um serviço pago para isso.

    Com poucas linhas de código, é possível automatizar a resolução de CAPTCHAs usando Python, Selenium e Anti-Captcha.

    Esse tipo de automação deve ser usado com responsabilidade e apenas em situações legítimas, como aprendizado ou projetos de automação corporativa.

    Assim você vai poder resolver qualquer CAPTCHA que precise de forma automática sempre que precisar!

    Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

    O que você aprende neste vídeo

    Resposta rápida: A aula resolve o reCAPTCHA V2 da página de teste do Google com o Anti-Captcha e mostra onde o token entra: num campo escondido da página, preenchido por JavaScript. Outro tipo de captcha pede o modelo correspondente na lista do serviço, e a aula pressupõe algum conhecimento de Selenium.

    Neste vídeo (39 min):

    • 1:49 - O serviço escolhido é o Anti-Captcha: o instrutor diz não ter vínculo com eles e o escolheu por já ter usado, por achar o código um dos mais simples e pela documentação, que considera boa.
    • 2:48 - O treino é na página padrão do Google para testar o reCAPTCHA, a caixinha de marcar que às vezes pede para selecionar imagens, dependendo do quanto duvida de que quem marca é uma pessoa.
    • 4:49 - No código da página há um campo de texto escondido; habilitado para aparecer, ele se preenche com um token, um código gigantesco, assim que o captcha é marcado.
    • 6:10 - Criada a conta no Anti-Captcha, chegam por e-mail o login, a senha e a chave da API; o serviço é pago, e é preciso colocar saldo na conta.
    • 9:08 - As instalações: pip install selenium (no Jupyter, pelo Anaconda Prompt), a biblioteca oficial do Anti-Captcha e o gerenciador de web driver.
    • 12:00 - O gerenciador identifica a versão do Chrome e baixa o driver dessa versão; na primeira vez pode aparecer uma mensagem de erro, e rodar de novo provavelmente resolve.
    • 15:43 - Da biblioteca do Anti-Captcha entra o modelo reCAPTCHA V2 proxyless, que é o tipo de captcha da página de teste.
    • 19:21 - Além da chave da API, o resolvedor recebe o link do site e a website key, que é como se fosse a chave do captcha.
    • 21:07 - A website key fica num atributo de um div logo acima do iframe do captcha; o Selenium acha esse elemento pelo ID e lê o atributo.
    • 25:39 - Se a resposta do resolvedor for zero, a mensagem de erro diz o motivo: com uma chave da API errada, que a chave não existe; sem crédito na conta, que falta crédito.
    • 27:01 - Com a chave certa e saldo na conta, o captcha sai resolvido em questão de 10 segundos, menos do que nos testes anteriores do instrutor, e o token aparece na tela.
    • 36:48 - Na rodada final, o código preenche o campo com o token, clica em enviar e a página confirma a verificação, o mesmo resultado de marcar a caixinha à mão.

    Trechos do vídeo:

    • Para passar de um captcha, há essencialmente duas formas: treinar uma inteligência artificial que o reconheça, o que costuma ser mais fácil com captcha de texto, mas dá muito trabalho e só fica boa para aquele captcha específico; ou usar um serviço de quebra de captcha, pago normalmente por captcha resolvido.
    • Serviços de quebra de captcha normalmente entregam o desafio a uma pessoa, em algum lugar do mundo, que o resolve, às vezes em 1 minuto ou 1 minuto e meio, e devolvem o token da resposta; como quem resolve não precisa ser você, o código pode rodar quando você quiser.
    • Pelo Selenium, escrever, clicar ou editar um elemento exige que ele esteja visível; um campo escondido se preenche executando um código JavaScript na página, que não precisa do elemento visível. Tornar o campo visível, preencher e escondê-lo de novo também funcionaria, mas dá muito mais trabalho.
    • Ao passar ao Selenium um código JavaScript que tem aspas simples, o comando vai entre aspas duplas no Python, senão o Python se perde entre umas e outras; e, com o token entrando por um f na frente do texto, a variável também precisa ficar entre aspas simples dentro do JavaScript.
    • O instrutor apresenta o conteúdo como 100% educacional e lembra de ler os termos de serviço: fazer besteira quebrando captchas em alguns sites pode render banimento.

    Hashtag Treinamentos

    Para acessar outras publicações de Python, clique aqui!


    Quer aprender mais sobre Python com um minicurso básico gratuito?

    Posts mais recentes de Python

    Posts mais recentes da Hashtag Treinamentos