TL;DR, Resposta Rápida
9 min de leiturafacebookexternalhit é o crawler que a Meta envia quando alguém compartilha um link no Facebook, no Instagram ou no Messenger, e ele busca a sua página para montar o cartão de prévia. A Meta documenta duas strings UA para ele, outros quatro crawlers da Meta ao lado dele e uma lista curta de requisitos de servidor que inclui gzip e deflate, tags Open Graph dentro do primeiro 1 MB e tolerância a um cabeçalho Range. A Meta diz que liberar o crawler por IP é a opção mais segura e depois liga esse conselho a uma âncora da própria página que não traz nenhuma lista de IP.
O que é o facebookexternalhit?
A Meta envia o facebookexternalhit quando alguém compartilha um link para o seu site em um dos aplicativos dela, e o crawler busca a página para que a Meta consiga montar o cartão de prévia. A documentação Meta Web Crawlers diz sem rodeios: o propósito principal "is to crawl the content of an app or website that was shared on one of Meta's family of apps, such as Facebook, Instagram, or Messenger." A mesma página afirma que o crawler "gathers, caches, and displays information about the app or website such as its title, description, and thumbnail image."
O link não precisa vir de um botão de compartilhamento. A Meta diz que o link "might have been shared by copying and pasting or by using the Facebook social plugin", então uma URL digitada em uma conversa do Messenger dispara a mesma busca que uma publicação pública.
Quais strings de user agent o facebookexternalhit envia?
A Meta documenta duas, e as duas começam pelo mesmo token em minúsculas. A página diz que a string UA nos seus arquivos de log "will be similar to one of the following":
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1Repare na diferença entre o texto corrido e o que trafega na rede. Os títulos e o corpo do texto da Meta escrevem o crawler como FacebookExternalHit em camel case, enquanto a string que o seu servidor recebe de fato vem em minúsculas. Compare por substring sem diferenciar maiúsculas, não pela grafia em camel case.
A Meta também publica a requisição exata para repetir quando você quer reproduzir o que o crawler vê:
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
-A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "$URL"Qual é a diferença entre o facebookexternalhit e o meta-externalagent?
São user agents separados com propósitos separados, e uma regra de robots.txt contra um não encosta no outro. A Meta agora documenta cinco crawlers na mesma página, e essa divisão é o que importa se você quer se livrar do tráfego de treinamento de IA sem perder as prévias de link.
| Crawler | Token de user agent | Propósito declarado pela Meta |
|---|---|---|
| FacebookExternalHit | facebookexternalhit/1.1 | Rastreia conteúdo compartilhado na família de apps da Meta e monta a prévia |
| Meta-WebIndexer | meta-webindexer/1.1 | Navega pela web para melhorar a qualidade dos resultados de busca do Meta AI |
| Meta-ExternalAds | meta-externalads/1.1 | Rastreia para publicidade e outros produtos e serviços de negócio |
| Meta-ExternalAgent | meta-externalagent/1.1 | Treina modelos de IA fundacionais ou melhora produtos indexando conteúdo diretamente |
| Meta-ExternalFetcher | meta-externalfetcher/1.1 | Busca links avulsos a pedido de uma pessoa, dando suporte a IA agêntica |
Bloquear o meta-externalagent não custa nada no feed, porque o cartão de prévia é montado por outro crawler. O próprio exemplo de robots.txt da Meta usa meta-externalagent como agente de amostra:
User-agent: meta-externalagent
Allow: / # Allow everything
Disallow: /private/ # Disallow a specific directoryA Meta não publica nenhuma data de quando os crawlers de IA foram separados do facebookexternalhit. A página traz uma única linha "Updated: May 21, 2026" e nenhum histórico de revisões, então a divisão está documentada como um fato do presente, sem um antes e um depois para conferir.

O que a Meta exige do seu servidor?
Cinco requisitos, todos listados em Crawler Requirements, e quatro deles são fáceis de furar sem perceber. O seu servidor "must use gzip and deflate encodings." As propriedades Open Graph "need to be listed before the first 1 MB of your website or app, or it will be cutoff." O conteúdo precisa estar rastreável "within a few seconds or Facebook will be unable to display the content."
O quarto é o que derruba servidores que entendem de intervalos. A Meta diz que o seu aplicativo ou site "should either generate and return a response with all required properties according to the bytes specified in the Range header of the crawler request or it should ignore the Range header altogether." Um servidor que respeita Range: bytes=0-524288 mas coloca o <head> depois desse limite devolve uma resposta tecnicamente correta sem nada para analisar. O quinto é a liberação por lista, tratada abaixo.
Nada disso tem a ver com o que as suas tags dizem, apenas com o crawler conseguir chegar até elas. O conteúdo das tags é um problema à parte, e o conjunto completo de propriedades que a Meta e todas as outras redes leem está neste passo a passo de tags Open Graph.
Como distinguir uma requisição real do facebookexternalhit de uma falsa?
Pelo IP, porque a string de user agent é um cabeçalho de texto livre que qualquer um pode enviar. A Meta concorda e manda liberar em lista "either the user agent strings or the IP addresses (more secure) used by the crawler."
E então a documentação para. Essa frase aponta para uma âncora chamada identify, e a página no ar não tem nenhuma seção de endereços IP. No código-fonte da página, a mesma âncora identify está presa a quatro títulos diferentes, incluindo o da seção de robots.txt. A Meta conta qual é a opção mais segura e depois aponta para o nada.
O comando está publicado, em uma página sem relação com o assunto. A documentação dos webhooks do WhatsApp da Meta dá a consulta para as rotas da própria Meta:
AdaptlyPost
Teste grátis de 7 dias
Análises multiplataforma
Caixa Social
Assistente com IA
whois -h whois.radb.net -- '-i origin AS32934' | grep '^route' | awk '{print $2}' | sortEsse número de sistema autônomo confere. O registro da ARIN lista o AS32934 como ASName: FACEBOOK, registrado em 24 de agosto de 2004. Rode a consulta você mesmo e você recebe o conjunto atual de objetos de rota: em 12 de setembro de 2026 ela retornou 416 prefixos IPv4 únicos e 633 prefixos IPv6 únicos, de 102.132.100.0/24 até blocos como 2401:db00::/32. A ressalva da própria Meta viaja junto com o comando, já que a página do WhatsApp avisa que "Meta periodically changes its IP addresses." Uma checagem de DNS reverso no endereço que fez a requisição é a alternativa mais barata para a maioria dos sites.
Dá para bloquear o facebookexternalhit no robots.txt?
Dá, e a Meta diz que o bloqueio nem sempre vai valer. A documentação afirma que "the FacebookExternalHit crawler might bypass robots.txt when performing security or integrity checks, such as checking for malware or malicious content." O Meta-ExternalFetcher carrega a mesma exceção porque busca links que uma pessoa pediu.
A Meta também pede paciência com a regra em si: "Please allow up to 24 hours for changes to robots.txt to take effect because crawlers may cache the contents of robots.txt for up to 24 hours." Um disallow que você adicionou hoje de manhã não explica um rastreamento desta tarde.
Bloquear o crawler mata a prévia. O link continua sendo publicado, só chega como uma URL pelada sem cartão, que é o mesmo resultado visual de uma tag quebrada. O clique seguinte passa pela camada de redirecionamento da Meta de qualquer jeito, um salto à parte com efeitos próprios sobre a sua analítica, destrinchado nesta análise do shim de links l.facebook.com.
Por que o crawler devolve código 0 ou uma prévia em branco?
Por causa de um registro de DNS em que quase nenhum site pensa. O FAQ de Link Sharing da Meta diz de forma direta: "The crawler will look for a AAAA record and return a response code 0 if it is not found." Um host só com IPv4 que funciona em qualquer navegador pode não devolver nada para o facebookexternalhit.
Outros três modos de falha saem do mesmo FAQ. As imagens ficam "cached asynchronously, so the image may not render the first time someone shares your content", e a solução da Meta é fazer cache antecipado disparando um scrape com o Sharing Debugger em /tools/debug/. Uma imagem que aparece como um quadrado branco está "no longer available, is too big or could not be fetched", e o teto é de 8 MB. Uma imagem entre 200 x 200 e 600 x 315 pixels aparece como um quadradinho em vez de cartão.
O último é permanente. Depois que um link foi compartilhado e "there have been more than 50 interactions with the post (comments, likes, shares, etc.), then the title cannot be changed." A razão declarada pela Meta é impedir que um site troque a história por baixo de quem já interagiu com ela. Todas as outras propriedades continuam editáveis. Acerte o título antes de o link sair, porque depois de 50 interações você está editando um campo cuja atualização ninguém vai ver.
Quando a mesma URL vai para várias redes de uma vez, o adaptlypost publica uma postagem em várias contas, e cada rede roda o próprio crawler contra essa única URL no ritmo dela. O comportamento de rastreamento continua sendo da plataforma. É a mesma divisão de trabalho que você vê no encurtamento de links, em que o X reescreve toda URL em um link t.co no momento em que você publica, e em que o seu rastreamento de campanha precisa sobreviver a essa reescrita, o que é o argumento para colocar parâmetros UTM na URL antes de ela chegar a qualquer editor de postagem.
Perguntas frequentes
O facebookexternalhit executa JavaScript?
A Meta não diz. A documentação descreve uma busca com cabeçalho Range, alguns segundos de tolerância e um corte de 1 MB para onde as propriedades Open Graph podem ficar, e nunca menciona renderização. Entregue as suas tags og: na resposta do servidor em vez de injetá-las no lado do cliente.
O facebookexternalhit é o mesmo crawler que o Instagram e o Messenger usam?
Sim. A Meta nomeia os três em uma frase só, dizendo que o crawler cuida de conteúdo "shared on one of Meta's family of apps, such as Facebook, Instagram, or Messenger." Um único user agent cobre o rastreamento de prévia nessas superfícies.

Por que o facebookexternalhit bate no meu servidor em rajadas?
A Meta não publica taxa de rastreamento, orçamento de requisições nem suporte a crawl-delay para ele. A documentação lista propósito, strings de user agent, requisitos de servidor e tratamento de robots.txt, e para por aí. Limitar taxa por IP contra o conjunto de rotas do AS32934 é a única alavanca que a documentação deixa para você.
Devo permitir o facebookexternalhit e bloquear o meta-externalagent?
Essa combinação é exatamente para o que os user agents separados existem. Permitir facebookexternalhit mantém os cartões de prévia funcionando no Facebook, no Instagram e no Messenger, enquanto um Disallow: / sob User-agent: meta-externalagent atinge o crawler que a Meta descreve como treinador de modelos de IA fundacionais.
O que o cabeçalho Range significa em uma requisição de crawler?
Ele pede ao seu servidor uma janela de bytes em vez do documento inteiro, e a requisição de exemplo da Meta usa Range: bytes=0-524288, os primeiros 512 KB. A Meta aceita qualquer um dos dois comportamentos: respeitar o cabeçalho e devolver os bytes pedidos com todas as propriedades necessárias dentro deles, ou ignorar o cabeçalho por completo e mandar a resposta inteira.
Como forço a Meta a rastrear uma URL de novo?
Passe a URL pelo Sharing Debugger em /tools/debug/, que a Meta aponta como o jeito de disparar um scrape, ou chame a Sharing API. A própria página de boas práticas da Meta descreve o Debugger como a ferramenta para sites que precisam atualizar as tags com mais frequência do que o período padrão de 24 horas.
AdaptlyPost
Teste grátis de 7 dias
Análises multiplataforma
Caixa Social
Assistente com IA
Um link compartilhado em particular num chat do Messenger é rastreado da mesma forma que uma publicação pública?
A Meta diz que um compartilhamento pode vir de copiar e colar um link ou do plugin social do Facebook, não só de um botão de compartilhar. Uma URL colada num chat do Messenger dispara a mesma requisição do facebookexternalhit que um link publicado publicamente no Facebook. A Meta não documenta nenhum caminho de rastreamento separado para uma mensagem privada, só a família de apps de onde um compartilhamento pode vir.
Por que o facebookexternalhit aparece em minúsculas nos logs do meu servidor?
A documentação da Meta escreve o crawler como FacebookExternalHit nos títulos e no texto, mas a string que ele realmente envia é em minúsculas: facebookexternalhit/1.1. Uma regra de filtro ou lista de permissões baseada na grafia em camel case não pega as requisições reais. Compare por uma substring sem diferenciar maiúsculas de minúsculas.
Que codificação o facebookexternalhit exige do meu servidor?
Os requisitos de crawler da Meta dizem que seu servidor precisa suportar as codificações gzip e deflate. Isso fica ao lado do resto da lista: tags Open Graph dentro do primeiro 1 MB, uma página rastreável em poucos segundos, tratamento correto do cabeçalho Range e a opção de lista de permissões por IP. A Meta lista gzip e deflate primeiro e declara o requisito sem nenhuma ressalva.
A Meta chega a ignorar minha regra Disallow do robots.txt para o facebookexternalhit?
A Meta diz que o facebookexternalhit pode ignorar o robots.txt ao fazer checagens de segurança ou integridade, como procurar malware ou conteúdo malicioso. O Meta-ExternalFetcher tem a mesma exceção, porque busca links que uma pessoa pediu diretamente. Uma regra Disallow também não age na hora: a Meta pede até 24 horas, porque os crawlers podem manter o robots.txt em cache por esse período.
Coloque isso em prática com o AdaptlyPost
Este artigo foi útil para você?
Conte-nos o que você achou!
Veja-nos mais no Google
Um clique marca a AdaptlyPost como fonte preferida e nossos artigos passam a aparecer mais acima nas suas Principais notícias, no modo IA e nas visões gerais com IA.
Antes de ir...
AdaptlyPost
Agende seu conteúdo em todas as plataformas
Gerencie todas as suas contas de redes sociais em um só lugar com o AdaptlyPost.
Análises multiplataforma
Caixa Social
Assistente com IA
Termos relacionados do glossário


De onde vem l.facebook.com e por que os cliques chegam como Direct
O Facebook manda os cliques de saída por l.facebook.com, o link shim dele. O que o desvio faz com o seu referrer e por que a visita chega como direta.


Como as tags Open Graph decidem o que cada rede mostra
As quatro tags Open Graph que o protocolo exige, quais redes as leem, quais leem tags twitter: no lugar delas e como ver o que um crawler recebeu.


O que o endpoint content_publishing_limit do Instagram devolve
O endpoint content_publishing_limit do Instagram devolve quota_usage mais um bloco config com quota_total 50 e quota_duration de 86400 segundos.
Artigos Relacionados


O que o escopo instagram_business_content_publish realmente concede
O escopo instagram_business_content_publish deixa um app criar posts orgânicos no Instagram e depende de instagram_business_basic em toda chamada.


Todos os limites que a API de Reels do Instagram impõe ao seu vídeo
Na API de Reels do Instagram um reel para em 15 minutos e 300 MB, e só MOV ou MP4 passam. Cada spec documentada e o erro que cada violação devolve.


A sessão de upload retomável do Instagram e o host rupload
Um upload retomável do Instagram começa com upload_type=resumable em /media, depois um POST para rupload.facebook.com com cabeçalhos offset e file_size.

