Como resolver o captcha no selenium python | Guia completo 2024

Adélia Cruz
Neural Network Developer
04-Jul-2024

Encontrar um CAPTCHA ao realizar automação na web é algo que deixa muitas pessoas sobrecarregadas. Esses CAPTCHAs, projetados especificamente para diferenciar entre usuários humanos e scripts automatizados, são sem dúvida um grande desafio ao usar o Selenium para tarefas de crawling ou automação na web. O guia completo de 2024 fornecerá uma solução abrangente para ajudá-lo a enfrentar esses obstáculos de maneira eficiente, focando principalmente nos dois tipos mais comuns de CAPTCHA: captcha e recaptcha, além de incorporar uma solução de terceiros para CAPTCHAs, CapSolver.
Índice
- O que é CAPTCHA
- Exemplos de CAPTCHA
- Pré-requisitos
- Método 1: Solução de CAPTCHA via API do Capsolver
- Entendendo Formulários HTML
- Lidando com Elementos de Textarea Ocultos
- Obtendo o Token
- Usando o SDK Python do Capsolver para Obter o Token
- Usando o Token no Selenium
- Método 2: Solução de CAPTCHA com Extensão Capsolver
- Download e Empacotamento da Extensão Capsolver
- Usando a Extensão Capsolver no Selenium
Código Bônus
Reivindique seu Código Bônus para as principais soluções de captcha; CapSolver: WEBS. Depois de resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitado.
O que é CAPTCHA
CAPTCHA exige que os usuários realizem tarefas específicas, como inserir o texto exibido em uma imagem ou clicar em imagens de um conjunto que correspondem a critérios específicos. Essas tarefas são projetadas para verificar se o usuário é humano ou um robô. Devido à natureza dinâmica dessas tarefas, elas só podem ser concluídas com sucesso por meio da cognição humana e da correta interpretação das informações, áreas onde a inteligência artificial frequentemente enfrenta dificuldades.
Algumas variantes de CAPTCHA também suportam indivíduos com deficiência visual, gerando áudio em vez de imagens.
Exemplos de CAPTCHA
O widget CAPTCHA de código aberto do Google, reCAPTCHA, é amplamente utilizado porque suporta diversos leitores de tela principais como Jcaptcha e NVDA para IE, Edge ou Chrome no Windows OS, ChromeVox para Chrome OS, e VoiceOver para Safari e Chrome no Mac OS.
Além disso, o captcha é outro tipo comum de CAPTCHA onde os usuários precisam clicar em imagens específicas, como selecionar todas as imagens que contêm um objeto específico, para completar a verificação. Usuários humanos normais frequentemente precisam gastar até um minuto completando uma verificação complexa do captcha. Ambos os tipos de CAPTCHA impedem eficazmente ataques de script automatizados e são amplamente adotados por muitos sites.
Pré-requisitos
- Google Chrome: Instale a versão mais recente do Chrome, pois interagiremos com o Chrome através do código.
- Python: Certifique-se de ter o Python instalado e que a versão seja 3 ou superior. Versões abaixo de 3 não são mais recomendadas.
- Selenium: A biblioteca Python para a ferramenta de automação Selenium.
- Capsolver Python SDK: O SDK oficial do Capsolver Python, que permite uma integração fácil com o Capsolver.
- Capsolver Extension: A extensão oficial do Capsolver para Chrome, que pode resolver automaticamente vários desafios para você.
Método 1: Solução de CAPTCHA via API do Capsolver
Vamos usar esta página demo como exemplo para demonstrar como resolver reCAPTCHA no Python Selenium usando a API do Capsolver.
Entendendo Formulários HTML
Antes de começarmos, precisamos entender o básico dos formulários HTML. Observe esta página e abra as ferramentas do desenvolvedor. Resolva manualmente o reCAPTCHA e clique no botão Enviar. Você verá uma solicitação POST enviada, submetendo três campos: ex-a
, ex-b
e g-recaptcha-response
, como mostrado na imagem abaixo:
Esses três campos correspondem a dois elementos de entrada e um elemento de textarea no formulário no código-fonte HTML inicial, como mostrado na imagem abaixo:
Nosso método envolve resolver o reCAPTCHA usando a API do Capsolver, obter o token, inseri-lo no elemento textarea e então clicar no botão Enviar para submeter o formulário.
Lidando com Elementos de Textarea Ocultos
Ao inserir o token no elemento textarea, observe que o elemento textarea na página da web possui um estilo CSS display: none
, o que significa que o textarea não está visível. Neste caso, se você tentar inserir conteúdo diretamente no elemento textarea no Selenium, ocorrerá um erro:
selenium.common.exceptions.ElementNotInteractableException: Mensagem: elemento não é interagível
, porque o elemento textarea não é interagível neste momento. Para resolver isso, precisamos definir o estilo CSS do elemento textarea como display: block
. O método específico será refletido no código posteriormente.
Obtendo o Token
O uso da API do Capsolver requer que forneçamos a websiteKey
, que pode ser encontrada procurando pela palavra-chave data-sitekey
no código-fonte da página:
Usando o SDK Python do Capsolver para Obter o Token
Veja como obter o token usando o SDK Python do Capsolver:
python
import capsolver
capsolver.api_key = "sua chave de API"
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyLess",
"websiteKey": "6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9",
"websiteURL": "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php",
})
token = solution["gRecaptchaResponse"]
print(token)
Usando o Token no Selenium
Agora, precisamos usar o token com o Selenium. Existem duas operações principais no Selenium:
- Tornar o elemento textarea visível para que ele possa ser interagido e o token possa ser inserido nele.
- Localizar o botão de envio e clicar nele para submeter o formulário.
Essas operações envolvem localizar elementos e interagir com eles. Se você não estiver familiarizado com o Selenium, pode consultar Web Scraping com Selenium e Python | Resolvendo Captcha ao Fazer Web Scraping.
Combinando com a API do Capsolver, o código completo é o seguint
e:
python
import capsolver
from selenium import webdriver
from selenium.webdriver.common.by import By
# Inicializar objeto Chrome Options e acessar o site alvo
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.get(url)
# Chamando a API do Capsolver para resolver o ReCaptcha
capsolver.api_key = "sua chave de API"
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyLess",
"websiteKey": "6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9",
"websiteURL": url,
})
token = solution["gRecaptchaResponse"]
print(f"Token retornado pelo Capsolver: {token}")
# Mudar a propriedade de estilo display do textarea para block para torná-lo visível
driver.execute_script("document.getElementById('g-recaptcha-response').style.display = 'block';")
# Simular a inserção do token no textarea
textarea = driver.find_element(By.ID, "g-recaptcha-response")
textarea.send_keys(token)
# Simular o clique e submeter o formulário
submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
submit_btn.click()
input("Pressione qualquer tecla para sair.")
driver.close()
O código acima demonstra como resolver reCAPTCHA usando a API do Capsolver no Python Selenium. Depois de resolvê-lo com sucesso, você verá a página a seguir:
Método 2: Solução de CAPTCHA com Extensão Capsolver
O Método 1 envolveu a resolução de CAPTCHA através da API do Capsolver, que inclui muitas operações complexas. Se você procura uma maneira mais simples e conveniente de resolver CAPTCHA, então a Extensão Capsolver é a melhor escolha. Ela pode ser facilmente integrada a navegadores como Chrome e Firefox. A Extensão Capsolver pode reconhecer e resolver automaticamente vários desafios de CAPTCHA em apenas alguns segundos, sem nenhuma intervenção humana, permitindo que você aproveite o serviço de resolução de CAPTCHA do Capsolver sem escrever nenhum código.
Usamos o captcha como exemplo, com a página alvo
Download e Empacotamento da Extensão Capsolver
Como estamos usando a Extensão Capsolver no Selenium, precisamos baixar o arquivo zip do GitHub oficial do Capsolver. O uso da Extensão Capsolver requer que você insira sua chave de API, conforme mostrado abaixo:
Interagir com extensões do navegador no Selenium pode ser bastante complicado, então podemos pré-preencher a chave de API no arquivo de configuração da extensão \assets\config.js
e depois carregá-la diretamente no Selenium. Extraia o arquivo zip da Extensão Capsolver que baixamos e insira sua chave de API no arquivo \assets\config.js
, conforme mostrado abaixo:
Em seguida, use o recurso de empacotamento de extensões embutido do Chrome para reempacotar a Extensão Capsolver. Observe que você não pode simplesmente compactar a pasta de volta em um arquivo zip; essa extensão seria inutilizável. No Chrome, visite chrome://extensions/
, ative o modo de desenvolvedor, selecione a opção Pack Extension e importe toda a pasta da extensão Capsolver. Após o reempacotamento, você obterá um arquivo .crx.
Usando a Extensão Capsolver no Selenium
Use o método add_extension
para carregar a Extensão Capsolver no formato .crx recém-reempacotado. O código de exemplo é o seguinte:
python
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_extension(r"C:\caminho\para\CapSolver.Browser.Extension-chrome-v1.14.0.crx")
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://iframe.arkoselabs.com/3117BF26-4762-4F5A-8ED9-A85E69209A46/index.html")
input("Pressione qualquer tecla para sair.")
driver.close()
Execute o código e você verá que a Extensão Capsolver resolve automaticamente o desafio captcha:
Conclusão
Seja usando a API do Capsolver ou a Extensão Capsolver, você pode resolver perfeitamente CAPTCHA no Python Selenium. Se tiver alguma dúvida, consulte a documentação do Capsolver para mais informações úteis.
Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.
Mais

Como Resolver CAPTCHA com Selenium e Node.js ao Fazer Scraping
Se você está enfrentando problemas contínuos com CAPTCHAs em seus esforços de scraping, considere usar algumas ferramentas e suas tecnologias avançadas para garantir uma solução confiável.

Adélia Cruz
15-Oct-2024

Scrapy vs. Selenium: Qual é o Melhor para o Seu Projeto de Web Scraping
Descubra os pontos fortes e as diferenças entre Scrapy e Selenium para web scraping. Aprenda qual ferramenta é mais adequada para o seu projeto e como lidar com desafios como CAPTCHAs.

Aloísio Vítor
25-Jul-2024

API vs. Scraping: a melhor maneira de obter os dados
Entenda as diferenças, os prós e os contras do Web Scraping e do API Scraping para escolher o melhor método de coleta de dados. Explore o CapSolver para obter soluções para desafios de bots.

Adélia Cruz
16-Jul-2024

Como resolver o CAPTCHA com o Selenium C#
Como resolver o CAPTCHA com o Selenium C#

Aloísio Vítor
11-Jul-2024

O que é Puppeteer e como usar na raspagem de dados | Guia Completo 2024
Este guia completo abordará o que é o Puppeteer e como utilizá-lo eficazmente na raspagem de dados da web.

Adélia Cruz
10-Jul-2024

O que é Web Scraping | Casos de Uso Comuns e Problemas
Conheça o web scraping: aprenda seus benefícios, enfrente os desafios com facilidade e impulsione seus negócios com o CapSolver.

Adélia Cruz
05-Jul-2024