In this Article
Desenvolvidos para identificar padrões que diferenciam bots de humanos, os sistemas CAPTCHA podem ser enganados. Adicionar imprevisibilidade e ações semelhantes às humanas ao seu scraper confunde o sistema, o que ajuda a evitar bloqueios. Selenium é uma biblioteca Python que oferece uma API fácil de usar para controlar navegadores. Por padrão, Selenium é executado com uma janela de navegador visível, mas pode ser configurado para rodar em modo headless. Alguns plugins estão disponíveis e podem ajudar a mascarar a automação, fazendo com que o navegador pareça um usuário real e reduzindo o risco de detecção.
Neste tutorial, vamos explorar e analisar algumas formas de contornar CAPTCHAs, incluindo Undetected ChromeDriver, rotação de proxies, simulação de comportamento humano e serviços externos (CapSolver). Vamos examinar cada uma delas, e você estará pronto para decidir qual é a mais adequada para você.
Usando Undetected ChromeDriver
Undetected ChromeDriver: o que é?
Desenvolvedores tentam usar navegadores headless como Selenium para contornar mecanismos anti-bot de sites. O Selenium Undetected ChromeDriver é um ChromeDriver otimizado, desenvolvido para evitar detecção. Diferentemente do ChromeDriver padrão, que revela informações que sistemas anti-bot usam para identificar bots, o Undetected ChromeDriver corrige esses vazamentos, reduzindo a probabilidade de que sistemas como DataDome, Imperva e BotProtect.io bloqueiem seu bot.
Preparação:
- Certifique-se de usar Python 3.6 ou uma versão mais recente e instale Selenium.
- Baixe e instale Chrome.
Etapas principais:
1. Instale Selenium, caso ainda não tenha feito isso.
pip3 install selenium
2. Para prosseguir, instale o módulo undetected-chromedriver executando o seguinte comando no Terminal:
pip3 install undetected-chromedriver
Você verá esta mensagem se a operação for bem-sucedida:
3. Usamos o editor VS Code neste tutorial. O próximo passo é importar bibliotecas para o Undetected ChromeDriver. Depois disso, escolha uma página da web da qual você gostaria de extrair dados. Faça uma captura de tela da sua página da web de destino para verificar se ela foi carregada corretamente sem CAPTCHA. Execute os seguintes comandos:
import undetected_chromedriver as uc
import time
# Initialize Chrome with undetected ChromeDriver
browser = uc.Chrome(headless=True, use_subprocess=True)
# Navigate to the target page
browser.get("https://example.com")
# Wait a few seconds to ensure the page loads fully
time.sleep(3)
# Save a screenshot to verify page loading
browser.save_screenshot("screenshot.png")
print("Screenshot taken and saved as 'screenshot.png'")
# Close the browser after the task
browser.quit()
Você conseguiu! Com Undetected ChromeDriver, o CAPTCHA deixou de ser um problema, e agora você pode começar a fazer scraping do site. Este método é o melhor para projetos pequenos. O principal motivo pelo qual ele não é muito eficaz para projetos de scraping em larga escala é que ele não consegue impedir o bloqueio do seu endereço IP. A próxima estratégia é uma alternativa mais segura.
Usando rotação de proxies
Os sites podem implementar um CAPTCHA oculto para detectar atividade de bots. Se muitas solicitações vierem de um único endereço IP, os sites identificam isso como comportamento de bot e, como resultado, bloqueiam o acesso. Usar endereços IP rotativos pode ajudar a resolver esse problema. Em nosso tutorial, estamos usando proxies residenciais da DataImpulse. Se quiser experimentá-los, basta se cadastrar e escolher seu plano preferido. Todas as informações essenciais estão disponíveis no seu Dashboard, e você pode encontrar suas credenciais da DataImpulse dentro do seu plano, na seção Proxy Access.
Além disso, em nosso guia completo, você pode encontrar informações sobre como participar da nossa comunidade, juntamente com uma visão geral do nosso dashboard fácil de usar e das seções que ele inclui.
Você precisa criar um pool de proxies ou pode tentar usar um único proxy. Para fazer isso, basta usar “your_single_proxy:port” em vez de uma lista de proxies.
Para “your_single_proxy:port” especifique seu host e porta.
Para driver.get(“https://example.com“) insira o site desejado. Depois de instalar todas as bibliotecas necessárias, você pode testar este código:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# List of DataImpulse proxies
proxy_list = [
"proxy1:port",
"proxy2:port",
"proxy3:port",
# Add more proxies from your DataImpulse pool
]
def start_selenium_with_proxy(proxy):
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument("--headless=new")
# Add proxy to Chrome options
chrome_options.add_argument(f'--proxy-server=http://{proxy}')
# Initialize the Selenium browser with the proxy settings
driver = webdriver.Chrome(options=chrome_options)
return driver
# Example scraping function with using rotating proxies
def scrape_website():
for proxy in proxy_list:
driver = start_selenium_with_proxy(proxy)
try:
# Navigate to the target website
driver.get("https://httpbin.io/ip")
print(driver.find_element(By.TAG_NAME, "body").text)
finally:
driver.quit()
# Run the scraping function
scrape_website()
Proxies gratuitos geralmente oferecem proteção fraca e podem até representar um risco. Conexões lentas, phishing e endereços IP bloqueados são apenas alguns dos possíveis perigos de usá-los. Isso leva ao principal problema de uma abordagem de rotação de proxies, que é o custo dos provedores de proxy. Nesse caso, pesquise e escolha o que você considerar mais confiável e acessível, incluindo todos os recursos necessários.
Navegue sem deixar rastros
Com proxies, os sites nunca desconfiarão de você, pedirão que insira um captcha ou até mesmo banirão você. Na DataImpulse, você obtém dados atualizados, nenhum IP em listas negras, tratamento de Captcha, APIs intuitivas e suporte humano profissional 24/7. Temos uma das tarifas mais baixas do mercado – apenas $1 por GB! Experimente agora!
Usando simulação de comportamento humano
Ao implementar sintetizadores de comportamento humano, seu navegador headless pode simular interações de usuário de forma mais autêntica. Aqui estão algumas das principais maneiras de simular ações reais de usuários:
- Movimentos do mouse – Eles criam curvas naturais, velocidades variáveis e acelerações, imitando como usuários reais movem o mouse.
- Cliques aleatórios – Os cliques são randomizados em termos de tempo e pequenos deslocamentos de posição para imitar um comportamento genuíno do usuário.
- Teclas digitadas – A digitação é ajustada para refletir velocidades naturais de digitação, pausas e erros ocasionais, criando um ritmo semelhante ao humano.
Adicione pequenos atrasos entre as ações para simular o comportamento humano, randomize o caminho do mouse e ajuste os locais dos cliques. Vamos usar 3 páginas de https://www.scrapingcourse.com/ecommerce como alvos. Aqui está um exemplo do código:
import time
import random
import requests
# make a GET request to the given URL and print the status code
def make_request(url):
response = requests.get(url)
print(f"Request to {url} returned status code: {response.status_code}")
# list of URLs to request
urls = [
"https://www.scrapingcourse.com/ecommerce/page/1/",
"https://www.scrapingcourse.com/ecommerce/page/2/",
"https://www.scrapingcourse.com/ecommerce/page/3/",
]
# range for random wait time (in seconds)
min_wait = 1
max_wait = 5
# iterate through each URL in the list
for url in urls:
make_request(url)
wait_time = random.uniform(min_wait, max_wait)
print(f"Waiting for {wait_time:.2f} seconds before the next request...")
time.sleep(wait_time)
print("All requests completed.")
Você poderá ver uma resposta semelhante se tudo tiver sido feito corretamente:
Na verdade, usar simulação de comportamento humano adiciona realismo aos scripts automatizados. No entanto, devido a essas ações randomizadas, essas simulações podem aumentar a complexidade e reduzir a velocidade geral do scraping.
Uso de serviços externos (CapSolver)
Há muitos serviços adicionais que podem ajudar você a lidar com diferentes tipos de CAPTCHAs. Neste tutorial, optamos por mencionar o serviço CapSolver. CapSolver integra-se a diferentes tipos de proxy para que os usuários possam gerenciar a resolução de CAPTCHA em vários endereços IP. O uso de proxies faz com que as solicitações pareçam vir de vários dispositivos e locais, aumentando o anonimato e reduzindo o risco de detecção. Para saber mais sobre as principais etapas da integração da DataImpulse com CapSolver, você pode ler um breve guia.
Precisaremos de uma chave de API, que você pode encontrar no seu painel do CapSolver.
Abaixo está um exemplo em Python demonstrando como utilizar a API da CapSolver para lidar com CAPTCHAs. Antes de executar o código, substitua YOUR_API_KEY, XXX e site_url por valores reais.
# pip3 install requests
import requests
import time
# TODO: Set your configuration
api_key = "YOUR_API_KEY" # Your CapSolver API key
site_key = "XXX" # The site key for the target CAPTCHA
site_url = "" # URL of the page with the CAPTCHA
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
response = requests.post("https://api.capsolver.com/createTask", json=payload)
result = response.json()
task_id = result.get("taskId")
if not task_id:
print("Failed to create task:", response.text)
return
print(f"Task ID received: {task_id} / Fetching result...")
while True:
time.sleep(3) # Delay between checks
payload = {"clientKey": api_key, "taskId": task_id}
response = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
result = response.json()
status = result.get("status")
if status == "ready":
return result.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or result.get("errorId"):
print("Solution retrieval failed! Response:", response.text)
return
token = capsolver()
print(token)
Serviços externos são sobre eficiência, escalabilidade e uma maior taxa de sucesso para lidar com tarefas complexas. Com esses serviços, os desenvolvedores podem se concentrar facilmente em outras necessidades do projeto. Algumas desvantagens podem ser os custos, a dependência da confiabilidade de terceiros e preocupações com privacidade devido ao controle limitado sobre os dados.
Resumindo
Python é bem conhecido por sua simplicidade e amplo suporte de bibliotecas, tornando a automação web e a coleta de dados simples. Com bibliotecas como Selenium e Playwright, você pode automatizar tarefas do navegador e contornar CAPTCHA com as ferramentas certas. A melhor forma é integrar seu web scraper com proxies, pois isso ajuda a contornar essas restrições, manter o anonimato e evitar bloqueios.
Entre em contato conosco hoje para saber mais sobre as várias ferramentas de scraping e nossas soluções personalizadas.





