Você clica em um link e cai em uma página quase vazia: "403 Forbidden" em letras grandes e a palavra "nginx" embaixo. Outro site escreve a mesma recusa como "You don't have permission to access this resource". E às vezes o Chrome mostra uma página cinza própria dizendo que o acesso ao site foi negado, com HTTP ERROR 403 no fim.
Tudo isso é um único código de status HTTP: o servidor recebeu a sua requisição, entendeu e decidiu não atendê-la. A seguir você vê como o 403 se diferencia do 401 e do 404, como saber quem recusou você, o que tentar como visitante, como o dono de um site encontra a regra nos logs e como ler um 403 no seu próprio código ou vindo de um proxy.
O que significa 403 Forbidden?
Toda resposta de um servidor web começa com um código de status de três dígitos. Os códigos da faixa 400 dizem que o problema está na requisição, e o 403 é o que quer dizer "eu sei o que você quer, e a resposta é não". O padrão HTTP, RFC 9110, define o 403 como a resposta de um servidor que entendeu a requisição, mas se recusa a atendê-la. Ele pode explicar o motivo na página que envia, mas não é obrigado.
O padrão acrescenta dois detalhes. Se você estava logado, um 403 significa que a sua conta não basta para esta página, e repetir a requisição não muda isso. E um servidor que quer esconder que uma página existe pode responder 404 Not Found no lugar.
Qual é a diferença entre 401, 403 e 404?
| Código | Nome | O que o servidor diz | O que costuma resolver |
|---|---|---|---|
401 | Unauthorized | "Não sei quem você é" | Fazer login ou enviar credenciais válidas |
403 | Forbidden | "Eu sei, e a resposta é não" | Outra conta, outra rede ou a permissão do site |
404 | Not Found | "Não há nada aqui" ou "não vou dizer" | Conferir o endereço |
Um 401 precisa vir com um cabeçalho que diz ao navegador como fazer login. Um 403 não traz essa pista, então fazer login de novo só ajuda quando o 403 vem de uma sessão perdida. O 407 é a versão do 401 para proxy: quem pede usuário e senha é o seu proxy, não o site.
Como um 403 acontece, passo a passo?
Uma requisição passa por vários pontos de controle, e qualquer um deles pode recusá-la:
- A porta de entrada. Uma CDN (uma rede de servidores que responde pelo site a partir de muitos locais) ou um firewall verifica o seu endereço IP, o seu país, o ritmo das suas requisições e a própria requisição.
- As regras do servidor web. O nginx, o Apache ou um balanceador de carga aplica as listas de endereços permitidos e negados e as regras do
.htaccess. - Os arquivos. O servidor precisa de permissão para ler o arquivo; uma pasta sem arquivo de índice (a página que ela mostra por padrão) é recusada em vez de listada.
- A aplicação. O código do site verifica se você fez login e se pode ver a página.
- A recusa. O primeiro ponto de controle que diz não responde com 403. Quem disse não define quem pode resolver.
Como é a página 403 e quem a enviou?
A aparência da página indica qual ponto de controle recusou você.
| O que você vê | Quem envia | Causa comum |
|---|---|---|
| "403 Forbidden", com "nginx" embaixo | nginx, o servidor web do site | Permissão de arquivo, falta de arquivo de índice ou uma regra de acesso |
| "403 Forbidden", com "openresty" embaixo | OpenResty, uma versão do nginx | O mesmo que no nginx |
| "Forbidden", "You don't have permission to access this resource." | Apache | Permissão de arquivo, regra do .htaccess ou uma pasta sem arquivo de índice |
| "403 Forbidden", "Request forbidden by administrative rules." | HAProxy, um balanceador de carga | Uma regra de acesso no balanceador de carga |
| "403 Forbidden", "Microsoft-Azure-Application-Gateway/v2" | O firewall do Azure Application Gateway | Uma regra de segurança combinou com a sua requisição |
| "Sorry, you have been blocked", um Ray ID | Cloudflare | Uma regra de segurança que o site configurou |
| "O acesso a … foi negado", "Você não tem autorização para ver esta página.", "HTTP ERROR 403" | Chrome ou Edge | O site enviou um 403 sem página própria |
Na última linha quem fala é o navegador: quando chega um 403 sem página própria, o Chrome e o Edge preenchem a tela com um texto deles (aqui, o do Chrome em português), que não diz nada sobre a causa. Para a página da Cloudflare, Sorry, you have been blocked explica o Ray ID e o que enviar ao site.
Por que estou recebendo um erro 403?
Do lado do visitante, estes são os motivos comuns:
- O endereço aponta para uma pasta ou para um arquivo privado, como uma pasta sem arquivo de índice ou um arquivo de backup.
- Você não está logado, ou a sua sessão terminou. Um cookie, o pequeno arquivo que um site guarda no seu navegador para lembrar de você, pode ter expirado ou estar corrompido.
- A sua conta não tem permissão, por exemplo para um documento compartilhado ou uma página de administração.
- O seu endereço IP ou o seu país não é permitido. Alguns sites de governo, bancos e empresas só aceitam visitantes de certos países ou redes, e alguns bloqueiam faixas de endereços depois de abusos.
- O endereço da sua VPN tem má reputação. Muitas pessoas compartilham o mesmo endereço de VPN; se algumas se comportaram mal, os sistemas de segurança podem recusar todo mundo que sai por ele.
- Um filtro de segurança barrou a requisição. Um firewall de aplicação web (WAF) compara cada requisição com regras escritas para impedir ataques, e um termo de busca com caracteres como
',--ou<script>pode parecer um ataque. O que é um WAF? explica como esses filtros decidem. - Uma extensão alterou a requisição, por exemplo reescrevendo cabeçalhos ou bloqueando scripts.
- Você enviou requisições demais. Alguns sites respondem a uma rajada com 403 em vez do 429 Too Many Requests de costume.
Erro 403: como resolver se você é visitante
Siga estes passos em ordem; os primeiros levam segundos.
- Confira o endereço. Procure um erro de digitação e depois chegue à página pelo menu do próprio site.
- Recarregue uma vez. Pressione F5 ou o botão Recarregar da página de erro do Chrome. Os navegadores não guardam um 403 para reutilizar, a menos que o site permita, então recarregar realmente pergunta de novo. Se nada mudar, pare: dezenas de recargas podem acionar uma regra de limite de taxa.
- Faça login de novo. Saia da conta, entre outra vez e abra a página a partir da página inicial do site.
- Apague os cookies daquele site. No Chrome: Mais > Configurações > Privacidade e segurança > Cookies de terceiros > Ver todos os dados e as permissões do site, procure o site e selecione Excluir (os passos do Google). Isso desconecta você apenas daquele site.
- Teste uma janela anônima. No Chrome, Mais > Nova janela anônima (Ctrl + Shift + N). Ela abre sem os cookies do site, e as extensões ficam desligadas, a não ser que você as tenha permitido ali. Se a página abrir, a causa era um cookie ou uma extensão; desligue as extensões uma a uma em Mais > Extensões > Gerenciar extensões.
- Desligue a VPN ou o proxy, ou troque de rede. Desconecte a VPN e recarregue, ou teste no celular com dados móveis. Se funcionar, o site recusa os endereços daquela VPN.
- Entre em contato com o site. Envie o endereço exato, o horário, o que você estava fazendo e qualquer referência que apareça na página, como um Ray ID ou um ID de incidente.
Não existe truque honesto para um 403 que um site impõe de propósito. Se um serviço só aceita visitantes do próprio país, o caminho é o que ele mesmo oferece: uma conta, um aplicativo oficial ou a equipe de suporte.
Se o site é seu: como encontrar a causa?
Comece descobrindo quem respondeu. As notas da Cloudflare sobre o erro 403 são diretas: um 403 sem a marca da Cloudflare veio do seu próprio servidor, normalmente de regras de permissão, de um módulo de firewall como o mod_security ou de regras que negam IPs; um com a marca da Cloudflare veio de um recurso de segurança nas suas configurações da Cloudflare. A mesma divisão vale para qualquer CDN ou firewall.
No seu próprio servidor, o log de erros mostra o motivo. Procure nele o minuto em que o 403 aconteceu:
| Linha do log | Servidor | O que significa |
|---|---|---|
directory index of "/var/www/html/" is forbidden | nginx | Uma pasta sem arquivo de índice; a listagem está desligada |
open() "/var/www/html/index.html" failed (13: Permission denied) | nginx | O usuário do servidor não consegue ler o arquivo |
access forbidden by rule | nginx | Uma regra allow ou deny foi acionada |
AH01276: Cannot serve directory …: No matching DirectoryIndex … | Apache | Uma pasta sem arquivo de índice; Indexes está desligado |
AH01630: client denied by server configuration | Apache | Uma regra Require na configuração ou no .htaccess |
O que corrigir:
- Permissões. O usuário do servidor web precisa conseguir ler o arquivo e entrar em todas as pastas acima dele. O guia do próprio WordPress recomenda 755 ou 750 para pastas e 644 ou 640 para arquivos. Nunca use 777: isso deixa qualquer conta do servidor alterar o arquivo.
- Falta de arquivo de índice. Crie um
index.htmlou umindex.php. Ligar a listagem de diretórios (autoindex on,Options +Indexes) elimina o 403, mas mostra todos os arquivos da pasta para qualquer pessoa. - Regras de acesso. Revise as linhas
deny,Requiree.htaccess, principalmente depois de mudar de hospedagem ou de instalar um novo plugin de segurança. Se o site estiver atrás de uma CDN, confira se nenhuma regra bloqueia os endereços da própria CDN. - Proteção contra hotlink. Regras que impedem outros sites de incorporar as suas imagens verificam o cabeçalho Referer, que informa a página de onde veio a requisição. Os navegadores nem sempre o enviam, então deixe passar as requisições sem ele.
- O firewall. Na Cloudflare, abra a página de segurança Analytics (análises) do site, selecione a aba Events (eventos) e filtre pelo endereço IP do visitante; o log amostrado mostra a ação e o recurso que agiu. O Azure Application Gateway responde 403 quando o WAF dele roda no modo Prevention (prevenção); o guia de solução de problemas da Microsoft mostra como encontrar o ID da regra e adicionar uma exclusão específica em vez de desligar o WAF.
Se as suas regras dependem do país, sair pelos Proxies residenciais daquele país mostra exatamente a página que um visitante de lá recebe.
Se você vê um 403 no seu código
Em um script, o 403 chega como código de status, e o corpo da resposta muitas vezes diz mais do que o navegador mostra. Leia o corpo primeiro. As causas comuns:
- Uma chave ausente, expirada ou errada. As APIs variam quanto a usar 401 ou 403. O Amazon API Gateway responde 403 para uma chave de API inválida, um token expirado e um método ou caminho que a API não tem; nesse último caso a mensagem diz "Missing Authentication Token", o que confunde muita gente.
- Uma chave válida sem a permissão. Falta ao token o escopo (scope) que esse endpoint exige; reenviá-lo não vai ajudar.
- Proteção CSRF. Para impedir que outros sites enviem formulários em nome de um usuário (falsificação de requisição entre sites), os frameworks recusam um envio sem o token emitido junto com o formulário; o Django responde 403 com "CSRF verification failed. Request aborted."
- Regras de limite de taxa e de bots. A API do GitHub responde 403 ou 429 quando você passa do limite de taxa, com
x-ratelimit-remaining: 0nos cabeçalhos. O firewall de um site pode fazer o mesmo com tráfego que parece automatizado.
Diante de uma regra de limite de taxa ou de bots, comporte-se como um visitante que o site aceita: diminua o ritmo, envie um User-Agent que identifique a sua ferramenta e um endereço de contato, siga o robots.txt, use a API oficial quando houver e peça permissão se precisar de mais. Copiar os cabeçalhos de um navegador ou trocar de endereço IP até algo passar vai contra a decisão do site; isso não é solução. Códigos de status HTTP no web scraping mostra quais códigos vale repetir e quais significam parar.
O 403 veio do seu proxy ou do site?
Atrás de um proxy, dois servidores podem dizer 403. Para um endereço https://, o cliente primeiro pede ao proxy que abra um túnel com uma requisição CONNECT. Se o proxy recusa, por exemplo porque as regras dele não permitem aquela porta, o site nunca viu você. Se o túnel abre e o site recusa, o 403 passa por ele com os cabeçalhos do próprio site.
A biblioteca Requests do Python lança um ProxyError com Tunnel connection failed: 403 Forbidden quando o túnel é recusado e devolve o 403 do site como uma resposta comum. Este script separa os dois casos:
import requests
PROXY = "http://user:pass@pr.proxynet.io:8000"
PROXIES = {"http": PROXY, "https": PROXY}
def who_sent_403(url):
try:
r = requests.get(url, proxies=PROXIES, timeout=20)
except requests.exceptions.ProxyError as err:
if "Tunnel connection failed: 403" in str(err):
return "the PROXY refused the tunnel; the site never saw the request"
raise
if r.status_code == 403:
return f"the SITE answered 403 (Server: {r.headers.get('Server', 'not sent')})"
return f"no 403, status {r.status_code}"
for url in ["https://httpbin.org/status/403", "https://httpbin.org:8443/"]:
print(url, "->", who_sent_403(url))Rodamos o script no nosso próprio computador (Python 3.13, Requests 2.34) por meio de um proxy de teste local que só abre túneis para a porta 443, como fazem muitos proxies corporativos. O primeiro endereço é uma página de teste pública que sempre responde 403:
https://httpbin.org/status/403 -> the SITE answered 403 (Server: gunicorn/19.9.0)
https://httpbin.org:8443/ -> the PROXY refused the tunnel; the site never saw the requestEndereços http:// simples não usam túnel, então os dois tipos chegam como respostas normais; o cabeçalho Server e a página mostram a diferença. Se um site concorda em liberar o seu crawler (robô de rastreamento), a lista de permissões (allowlist) dele precisa de endereços que não mudam, e é isso que os Proxies ISP oferecem.
Onde você pode encontrar um 403
- Portais de governo, de impostos e de bancos acessados do exterior ou por uma VPN.
- Documentos compartilhados e áreas administrativas para as quais a sua conta não tem liberação.
- Login com uma conta Google dentro do navegador embutido de outro aplicativo.
- Imagens incorporadas de um site com proteção contra hotlink.
- APIs depois de um limite de taxa, e monitores de preço ou crawlers de SEO que um firewall trata como bots.
Erros comuns
- Limpar o cache inteiro várias vezes. Só os cookies daquele site importam.
- Achar que o site caiu. Um 403 significa que o servidor está no ar e recusando esta requisição específica.
- Donos de sites: usar permissões 777 ou ligar a listagem de diretórios para o erro sumir.
- Donos de sites: bloquear os endereços da CDN com uma regra de firewall ou um plugin de segurança.
- Desenvolvedores: repetir um 403 em um loop apertado. Uma recusa não muda, e cada nova tentativa soma em um contador de limite de taxa.
Guia de decisão
| A sua situação | O que fazer |
|---|---|
| Uma página "403 Forbidden" simples em um endereço | Confira o endereço, use o menu do site |
| Ontem funcionava com você logado | Faça login de novo, apague os cookies daquele site |
| Funciona em uma janela anônima | Remova o cookie ou a extensão responsável |
| Um Ray ID ou ID de incidente na página | Envie ao site junto com o horário |
| O site é seu e o log diz "Permission denied" | Corrija as permissões de arquivos e pastas |
| O seu script recebe "Tunnel connection failed: 403" | O proxy recusou; confira a porta e o destino |
| O seu script recebe o 403 do site | Leia o corpo, diminua o ritmo, use a API oficial |
Perguntas frequentes
O erro 403 Forbidden é culpa minha?
Às vezes. Sessão expirada, cookie, extensão ou VPN você mesmo resolve. Se o site recusa o seu país, a sua rede ou a sua conta de propósito, só o site pode mudar isso.
Uma VPN pode causar o erro 403?
Sim, com frequência. Endereços de VPN são compartilhados por muitos usuários, e alguns sites os recusam de cara ou depois de abusos vindos da mesma faixa. Se a página abre com a VPN desligada, o site está recusando o endereço da VPN.
Por que recebo um 403 no celular, mas não no computador?
O celular muitas vezes usa dados móveis com outro endereço IP, um aplicativo de VPN pode estar ligado em só um dos aparelhos, e cada navegador guarda os próprios cookies. Teste o celular no mesmo Wi-Fi e depois apague os dados do site no navegador dele.
O que significa "403 disallowed_useragent" ao fazer login com o Google?
O Google recusa logins dentro da visualização web embutida de um aplicativo (um WebView), porque o aplicativo poderia ler ou alterar o que passa entre você e o Google. Faça login pelo seu navegador normal ou peça ao desenvolvedor do aplicativo que corrija isso.
Quanto tempo dura um bloqueio 403?
Uma regra de permissão ou de país dura até alguém mudá-la. Regras de limite de taxa e de bots costumam expirar depois de minutos ou horas; algumas APIs informam o momento em um cabeçalho Retry-After ou x-ratelimit-reset.
Um 403 prejudica um site na busca do Google?
Sim, nas páginas públicas. O Google não indexa páginas que respondem com um código 4xx e remove as que já estavam indexadas. Ele também pede aos donos de sites que não usem o 403 para desacelerar o rastreador dele: códigos 4xx que não sejam 429 não alteram a velocidade de rastreamento.
Em resumo
Um 403 Forbidden significa que um servidor entendeu a sua requisição e decidiu não atendê-la. Como visitante, confira o endereço, faça login de novo, apague os cookies do site, teste uma janela anônima e desligue a VPN; se a recusa continuar, entre em contato com o site. Como dono do site, descubra quem respondeu e depois leia o log de erros. No código, leia o corpo da resposta e diferencie o 403 do seu proxy do 403 do site. Para monitoramento e coleta de dados que os sites aceitam, compare os tipos de proxy na nossa página de proxies.




