///
Erro 403 e Outros Problemas no Web Scraping: Por que Ocorrem e Como Evitá-los?
Ekaterina Yanchuk
Ekaterina Yanchuk
Autor de artigos técnicos
May 13, 2025
7 min

Erro 403 e outros problemas no web scraping: por que acontecem e como evitar?

 

 

Web scraping é um processo que permite automatizar a coleta de dados de diversas fontes. No entanto, muitas vezes acontece que, ao tentar acessar informações, um scraper pode enfrentar diversos obstáculos, sendo um deles o erro comum 403 Forbidden. Esse erro indica que o servidor bloqueou o acesso ao recurso solicitado. Para realizar web scraping de forma eficiente, é importante entender as causas de sua ocorrência e conhecer métodos para contorná-lo. Neste artigo, veremos o que é o erro 403, por que ele ocorre, quais estratégias podem ajudar a contorná-lo, além de analisar outras limitações na coleta de dados e formas de resolvê-las. 

robots
Comece agora e automatize sua solução reCAPTCHA v2

Causas de ocorrência 

Por que o servidor bloqueia o acesso aos dados? No web scraping, o erro 403 ocorre devido a mecanismos de proteção de sites contra acesso não autorizado ou uso excessivo de recursos. Vamos analisar com mais detalhes as causas desse erro e suas soluções. 

  • Restrição por endereço IP: os sites podem limitar o acesso por IP. Se muitas requisições forem feitas a partir de um único IP, o servidor pode bloqueá-lo para evitar sobrecarga e proteger contra possíveis ataques. 

  • Modo headless: o uso de navegador headless em ferramentas de automação como Selenium também pode causar erros. Alguns sites conseguem detectar que as requisições vêm de um navegador em modo headless, onde não há interação do usuário (como cliques ou rolagem de página). Isso pode indicar acesso automatizado, que pode ser considerado atividade suspeita. No entanto, se você realmente precisar desse modo, configure o navegador para simular um navegador real com interface gráfica. 

  • Ausência de cabeçalhos e cookies necessários. Alguns sites exigem cookies ou sessões específicas para acessar o conteúdo. 

  • User-Agent incorreto: muitos sites verificam o cabeçalho User-Agent com informações do navegador e dispositivo. Se você não definir esse cabeçalho, defini-lo incorretamente ou não alterá-lo em requisições em larga escala, o servidor pode negar o acesso. 

     

Como contornar o erro 403 no web scraping 

 

Para que a coleta de dados ocorra sem falhas, vamos analisar alguns métodos eficazes para evitar bloqueios de acesso aos recursos necessários: 

-  Uso de proxies de qualidade: a troca periódica de endereço IP ajuda a evitar bloqueios. É importante usar proxies confiáveis para não cair em listas negras. 

-  Evitar requisições muito frequentes: reduzir a frequência das requisições e adicionar atrasos entre elas pode ajudar a evitar bloqueios. Se você estiver usando Python no seu scraper, a biblioteca time pode ser usada para adicionar atrasos entre requisições: 

import time
time.sleep(5)  # atraso de 5 segundos entre requisições

- Simulação de navegador real. Para isso, podem ser usadas várias opções, como no Selenium: 

from selenium import webdriver
options = webdriver.ChromeOptions()
# Não adicionar --headless se for necessário um navegador com interface gráfica
options.add_argument("--headless")
# Simulação de tamanho de tela
options.add_argument("window-size=1920,1080")
# Este parâmetro ajuda a ocultar sinais de automação.
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

-  Se o site exigir autenticação, é importante armazenar e usar cookies corretamente. Com a biblioteca requests, é possível enviar cookies junto com as requisições: 

import requests
session = requests.Session()
response = session.get('https://example.com')
# uso de cookies em requisições subsequentes
response2 = session.get('https://example.com/another-page')

-  Definição correta de User-Agent: usar User-Agents realistas pode ajudar a evitar bloqueios. O ideal é usar aqueles utilizados por navegadores populares (como Chrome e Firefox): 

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
}

- Também é possível usar rotação de User-Agent com a biblioteca Python random. Para isso, é necessário criar uma lista separada de User-Agents de diferentes navegadores e atualizá-la periodicamente. 

Exemplo de código para escolher um User-Agent aleatório de uma lista pré-definida usando random: 

import random
import requests
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.122 Safari/537.3",
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/56.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.2 Safari/605.1.15",
]
random_user_agent = random.choice(user_agents)
headers = {
    "User-Agent": random_user_agent
}
response = requests.get("https://example.com", headers=headers)
print(f"Status code: {response.status_code}")
print(f"User-agent utilizado: {random_user_agent}")

Além de alterar o User-Agent, essa biblioteca também permite usar endereços IP aleatórios para cada requisição a partir de um pool de proxies, adicionar atrasos aleatórios entre requisições e rotacionar outros elementos para simular o comportamento de diferentes usuários e dispositivos. 

 

Quais outras dificuldades existem no web scraping? 

 

Além do erro 403, os scrapers frequentemente enfrentam outros erros: 

  • 401 Unauthorized: acesso negado sem credenciais. Solução — uso de autenticação com login e senha.

  • 500 Internal Server Error: problema no lado do servidor. Solução — repetir a requisição mais tarde ou notificar o administrador.

  • 429 Too Many Requests: muitas requisições. Solução — reduzir a frequência das requisições, usar proxies.

  • Estrutura HTML confusa: ao fazer web scraping, é possível encontrar HTML ofuscado, onde classes, identificadores e outros elementos possuem nomes incompreensíveis ou gerados dinamicamente. Solução — uso de XPath ou seletores CSS mais estáveis, busca de elementos por conteúdo textual, além de bibliotecas específicas, como lxml, para parsing e processamento de HTML. Em casos mais complexos, é possível usar TensorFlow ou PyTorch para criar modelos de machine learning capazes de reconhecer padrões e classificar elementos ofuscados com base em grandes volumes de dados. É importante entender como o site ofusca os dados para adaptar as estratégias de scraping adequadamente.

Outro obstáculo comum é o CAPTCHA, um sistema de proteção de sites que aparece por razões semelhantes. Mas não há motivo para preocupação, pois existem muitos serviços que ajudam a contornar essas limitações de forma eficiente, e um dos melhores é o CapMonster Cloud. Esta ferramenta em nuvem oferece uma API para resolução automática de CAPTCHAs, facilitando muito o trabalho. Veja os passos para integrar o CapMonster Cloud no seu scraper em Python:

  • Registro e obtenção da chave API. Para usar o CapMonster Cloud, você precisa se registrar no serviço e obter uma chave API para autenticação das requisições.

  • Instalação das bibliotecas necessárias. O CapMonster Cloud possui bibliotecas próprias para diferentes linguagens. Vamos ver a instalação da biblioteca oficial para Python: 

pip install capmonstercloudclient

 

Com essa biblioteca é possível criar uma tarefa facilmente, enviá-la ao servidor e obter a resposta: 

# https://github.com/CapMonsterCloud/capmonstercloud-client-python

import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2Request
# from capmonstercloudclient.requests.baseRequestWithProxy import ProxyInfo  # Descomente se planeja usar um proxy

API_KEY = "YOUR_API_KEY"  # Insira sua chave de API do CapMonster Cloud

async def solve_recaptcha_v2():
    client_options = ClientOptions(api_key=API_KEY)
    cap_monster_client = CapMonsterClient(options=client_options)

    # Exemplo básico sem proxy
    # O CapMonster Cloud usa automaticamente seus próprios proxies
    recaptcha2_request = RecaptchaV2Request(
        websiteUrl="https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
        websiteKey="6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd"
    )

    # Exemplo de uso do seu próprio proxy
    # Descomente este bloco se quiser usar um proxy personalizado

    # proxy = ProxyInfo(
    #     proxyType="http",
    #     proxyAddress="123.45.67.89",
    #     proxyPort=8080,
    #     proxyLogin="username",
    #     proxyPassword="password"
    # )

    # recaptcha2_request = RecaptchaV2Request(
    #     websiteUrl="https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
    #     websiteKey="6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
    #     proxy=proxy,
    #     userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"
    # )

    # Se necessário, você pode verificar o saldo
    balance = await cap_monster_client.get_balance()
    print("Balance:", balance)

    result = await cap_monster_client.solve_captcha(recaptcha2_request)
    print("Solution:", result)

asyncio.run(solve_recaptcha_v2())

Links úteis 

Antes de começar a utilizar qualquer uma das ferramentas mencionadas neste artigo, recomendamos que consulte a sua documentação. Aqui estão links úteis onde você pode obter mais informações e encontrar respostas para possíveis dúvidas: 

 


Conclusão 

 

O web scraping lida bem até com grandes volumes de dados, mas erros frequentes podem dificultar o processo. Entender as causas de erros como 403 e aplicar métodos corretos de contorno — configuração de User-Agent, uso de proxies e serviços de CAPTCHA — tornará seu trabalho mais eficiente. Seguindo métodos comprovados, você reduz o risco de bloqueios e simplifica a coleta de dados, e uma abordagem cuidadosa não só facilita o trabalho como também garante uma experiência positiva com os recursos da web. 


NB: Por favor, observe que o produto destina-se à automação de testes exclusivamente em seus próprios sites e recursos, aos quais você tem direito legal de acesso.

ItGuy
geear
Programa de afiliados para desenvolvedores de software
Ganhe até 30% dos gastos dos seus usuários com a evasão de captcha
✅ Solicitação enviada
Obrigado pelo seu interesse em nosso programa de parcerias! Entraremos em contato com você dentro de 7 dias úteis.
Solicitação para participar
Preencha o formulário para enviar uma solicitação para o programa de afiliados.
Mais artigos