TL;DR, Réponse Rapide
9 min de lecturefacebookexternalhit est le crawler que Meta envoie quand un lien est partagé sur Facebook, Instagram ou Messenger, et il récupère votre page pour construire la carte d'aperçu. Meta documente deux chaînes UA pour lui, quatre autres crawlers Meta à côté, et une courte liste d'exigences serveur incluant gzip et deflate, des balises Open Graph dans le premier 1 Mo et la tolérance à un en-tête Range. Meta présente la liste blanche par IP comme l'option la plus sûre, puis renvoie ce conseil vers une ancre de sa propre page qui ne contient aucune liste d'IP.
Qu'est-ce que facebookexternalhit ?
Meta envoie facebookexternalhit quand un lien vers votre site est partagé dans l'une de ses applications, et le crawler récupère la page pour que Meta puisse construire la carte d'aperçu. La documentation Meta Web Crawlers le dit sans détour : l'objectif premier « 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. » La même page précise que le crawler « gathers, caches, and displays information about the app or website such as its title, description, and thumbnail image. »
Le partage n'a pas besoin de venir d'un bouton de partage. Meta indique que le lien « might have been shared by copying and pasting or by using the Facebook social plugin », si bien qu'une URL tapée dans une conversation Messenger déclenche la même récupération qu'une publication publique.
Quelles chaînes de user agent facebookexternalhit envoie-t-il ?
Meta en documente deux, et toutes deux commencent par le même token en minuscules. La page indique que la chaîne UA présente dans vos fichiers journaux « will be similar to one of the following » :
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1Notez l'écart entre la prose et le format réseau. Les titres et le corps de texte de Meta écrivent le crawler FacebookExternalHit en camel case, alors que la chaîne que votre serveur reçoit réellement est en minuscules. Faites la correspondance sur une sous-chaîne insensible à la casse, pas sur l'écriture en camel case.
Meta publie aussi la requête exacte à rejouer quand vous voulez reproduire ce que voit le crawler :
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
-A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "$URL"En quoi facebookexternalhit diffère-t-il de meta-externalagent ?
Ce sont des user agents distincts aux objectifs distincts, et une règle robots.txt visant l'un ne touche pas l'autre. Meta documente désormais cinq crawlers sur la même page, et c'est cette séparation qui compte si vous voulez chasser le trafic d'entraînement IA sans perdre vos aperçus de liens.
| Crawler | Token de user agent | Objectif annoncé par Meta |
|---|---|---|
| FacebookExternalHit | facebookexternalhit/1.1 | Explore le contenu partagé dans la famille d'applications de Meta et construit l'aperçu |
| Meta-WebIndexer | meta-webindexer/1.1 | Parcourt le web pour améliorer la qualité des résultats de recherche de Meta AI |
| Meta-ExternalAds | meta-externalads/1.1 | Explore pour la publicité et d'autres produits et services liés au business |
| Meta-ExternalAgent | meta-externalagent/1.1 | Entraîne des modèles d'IA fondamentaux ou améliore des produits en indexant directement le contenu |
| Meta-ExternalFetcher | meta-externalfetcher/1.1 | Récupère des liens isolés à la demande d'une personne, au service de l'IA agentique |
Bloquer meta-externalagent ne vous coûte rien dans le fil, parce que la carte d'aperçu est construite par un autre crawler. L'exemple de robots.txt de Meta lui-même utilise meta-externalagent comme agent d'illustration :
User-agent: meta-externalagent
Allow: / # Allow everything
Disallow: /private/ # Disallow a specific directoryMeta ne publie aucune date pour la séparation des crawlers IA d'avec facebookexternalhit. La page porte une seule ligne « Updated: May 21, 2026 » et aucun historique de révisions, la séparation est donc documentée comme un fait du présent, sans avant ni après à vérifier.

Qu'est-ce que Meta exige de votre serveur ?
Cinq exigences, toutes listées sous Crawler Requirements, et quatre d'entre elles se ratent sans qu'on s'en aperçoive. Votre serveur « must use gzip and deflate encodings. » Les propriétés Open Graph « need to be listed before the first 1 MB of your website or app, or it will be cutoff. » Le contenu doit être explorable « within a few seconds or Facebook will be unable to display the content. »
La quatrième est celle qui piège les serveurs qui gèrent les plages. Meta indique que votre application ou votre 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. » Un serveur qui respecte Range: bytes=0-524288 mais place le <head> au-delà de cette limite renvoie une réponse techniquement correcte où il n'y a rien à analyser. La cinquième est la liste blanche, traitée plus bas.
Rien de tout cela ne concerne ce que disent vos balises, seulement la question de savoir si le crawler peut les atteindre. Le contenu des balises est un problème distinct, et l'ensemble complet des propriétés que lisent Meta et tous les autres réseaux est couvert dans ce guide des balises Open Graph.
Comment distinguer une vraie requête facebookexternalhit d'une fausse ?
Par l'IP, car la chaîne de user agent est un en-tête en texte libre que n'importe qui peut envoyer. Meta est du même avis et conseille de mettre en liste blanche « either the user agent strings or the IP addresses (more secure) used by the crawler. »
Puis la documentation s'arrête. Cette phrase pointe vers une ancre nommée identify, et la page en ligne ne comporte aucune section sur les adresses IP. Dans le code source de la page, la même ancre identify est attachée à quatre titres différents, dont celui de la section robots.txt. Meta vous nomme l'option la plus sûre puis pointe vers le vide.
La commande est publiée, sur une page sans rapport. La documentation des webhooks WhatsApp de Meta donne la requête pour les routes de Meta :
AdaptlyPost
Essai gratuit de 7 jours
Analyses multiplateforme
Boîte sociale
Assistant IA
whois -h whois.radb.net -- '-i origin AS32934' | grep '^route' | awk '{print $2}' | sortCe numéro de système autonome se vérifie. Le registre de l'ARIN décrit AS32934 comme ASName: FACEBOOK, enregistré le 24 août 2004. Lancez la requête vous-même et vous obtenez l'ensemble courant des objets de route : le 12 septembre 2026, elle a renvoyé 416 préfixes IPv4 uniques et 633 préfixes IPv6 uniques, de 102.132.100.0/24 à des blocs comme 2401:db00::/32. La mise en garde de Meta voyage avec la commande, puisque la page WhatsApp avertit que « Meta periodically changes its IP addresses. » Une vérification DNS inverse sur l'adresse émettrice reste l'alternative la moins coûteuse pour la plupart des sites.
Peut-on bloquer facebookexternalhit dans le robots.txt ?
Oui, et Meta prévient que le blocage ne tiendra pas toujours. La documentation énonce que « the FacebookExternalHit crawler might bypass robots.txt when performing security or integrity checks, such as checking for malware or malicious content. » Meta-ExternalFetcher porte la même dérogation, parce qu'il récupère des liens demandés par une personne.
Meta demande aussi de la patience sur la règle elle-même : « 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. » Un disallow ajouté ce matin n'explique pas une exploration de cet après-midi.
Bloquer le crawler tue l'aperçu. Le lien se publie toujours, il arrive simplement en URL nue sans carte, soit le même résultat visuel qu'une balise cassée. Le clic qui suit passe de toute façon par la couche de redirection de Meta, un saut distinct avec ses propres effets sur vos statistiques, décortiqué dans cette analyse du shim de liens l.facebook.com.
Pourquoi le crawler renvoie-t-il un code 0 ou un aperçu vide ?
À cause d'un enregistrement DNS auquel presque aucun site ne pense. La FAQ Link Sharing de Meta le dit sans détour : « The crawler will look for a AAAA record and return a response code 0 if it is not found. » Un hôte en IPv4 seul qui fonctionne dans tous les navigateurs peut ne rien renvoyer à facebookexternalhit.
Trois autres modes de défaillance sortent de cette même FAQ. Les images sont « cached asynchronously, so the image may not render the first time someone shares your content », et le correctif de Meta consiste à pré-cacher en déclenchant un scrape avec le Sharing Debugger à l'adresse /tools/debug/. Une image qui s'affiche en carré blanc est « no longer available, is too big or could not be fetched », et le plafond est de 8 Mo. Une image comprise entre 200 x 200 et 600 x 315 pixels s'affiche en petit carré plutôt qu'en carte.
Le dernier point est définitif. Une fois un lien partagé, si « there have been more than 50 interactions with the post (comments, likes, shares, etc.), then the title cannot be changed. » La raison avancée par Meta est d'empêcher un site de changer l'histoire dans le dos de ceux qui ont déjà réagi. Toutes les autres propriétés restent modifiables. Réglez le titre avant que le lien parte, parce qu'au-delà de 50 interactions vous modifiez un champ dont personne ne verra la mise à jour.
Quand la même URL part vers plusieurs réseaux en même temps, adaptlypost publie une même publication sur plusieurs comptes, et chaque réseau lance ensuite son propre crawler sur cette unique URL, selon son propre rythme. Le comportement d'exploration reste celui de la plateforme. C'est la même division du travail qu'avec l'encapsulation de liens, où X réécrit chaque URL en un lien t.co dès que vous publiez, et où votre suivi de campagne doit survivre à cette réécriture, ce qui plaide pour poser des paramètres UTM sur l'URL avant même qu'elle atteigne un éditeur de publication.
Questions fréquentes
facebookexternalhit exécute-t-il le JavaScript ?
Meta ne le dit pas. La documentation décrit une récupération avec un en-tête Range, quelques secondes de tolérance et une coupure à 1 Mo pour l'emplacement des propriétés Open Graph, et ne parle jamais de rendu. Servez vos balises og: dans la réponse du serveur plutôt que de les injecter côté client.
facebookexternalhit est-il le même crawler qu'utilisent Instagram et Messenger ?
Oui. Meta nomme les trois dans une même phrase, en disant que le crawler traite le contenu « shared on one of Meta's family of apps, such as Facebook, Instagram, or Messenger. » Un seul user agent couvre l'exploration d'aperçu sur ces surfaces.

Pourquoi facebookexternalhit frappe-t-il mon serveur par rafales ?
Meta ne publie ni taux d'exploration, ni budget de requêtes, ni prise en charge de crawl-delay pour lui. La documentation liste l'objectif, les chaînes de user agent, les exigences serveur et le traitement du robots.txt, et s'arrête là. La limitation de débit par IP contre l'ensemble de routes d'AS32934 est le seul levier que la documentation vous laisse.
Faut-il autoriser facebookexternalhit et bloquer meta-externalagent ?
Cette combinaison est exactement la raison d'être des user agents séparés. Autoriser facebookexternalhit maintient les cartes d'aperçu sur Facebook, Instagram et Messenger, tandis qu'un Disallow: / sous User-agent: meta-externalagent vise le crawler que Meta décrit comme entraînant des modèles d'IA fondamentaux.
Que signifie l'en-tête Range sur une requête de crawler ?
Il demande à votre serveur une fenêtre d'octets plutôt que le document entier, et la requête d'exemple de Meta utilise Range: bytes=0-524288, les premiers 512 Ko. Meta accepte l'un ou l'autre comportement : respecter l'en-tête et renvoyer les octets demandés avec toutes les propriétés requises à l'intérieur, ou ignorer complètement l'en-tête et envoyer la réponse entière.
Comment forcer Meta à réexplorer une URL ?
Passez-la dans le Sharing Debugger à l'adresse /tools/debug/, que Meta désigne comme le moyen de déclencher un scrape, ou appelez la Sharing API. La page de bonnes pratiques de Meta présente le Debugger comme l'outil des sites qui doivent mettre à jour leurs balises plus souvent que la période standard de 24 heures.
AdaptlyPost
Essai gratuit de 7 jours
Analyses multiplateforme
Boîte sociale
Assistant IA
Un lien partagé en privé dans une conversation Messenger est-il exploré de la même façon qu'une publication publique ?
Meta indique qu'un partage peut venir d'un copier-coller de lien ou du plugin social Facebook, pas seulement d'un bouton de partage. Une URL collée dans une conversation Messenger déclenche la même requête facebookexternalhit qu'un lien publié publiquement sur Facebook. Meta ne documente aucun chemin d'exploration distinct pour un message privé, seulement la famille d'applications d'où peut venir un partage.
Pourquoi facebookexternalhit apparaît-il en minuscules dans mes journaux serveur ?
La documentation de Meta orthographie le crawler FacebookExternalHit dans les titres et le texte, mais la chaîne réellement envoyée est en minuscules : facebookexternalhit/1.1. Une règle de filtrage ou de liste blanche construite sur l'orthographe en camel case rate les vraies requêtes. Comparez plutôt une sous-chaîne sans tenir compte de la casse.
Quel encodage facebookexternalhit exige-t-il de mon serveur ?
Les exigences du crawler de Meta précisent que votre serveur doit prendre en charge les encodages gzip et deflate. Cela s'ajoute au reste de la liste : les balises Open Graph dans le premier 1 Mo, une page explorable en quelques secondes, une gestion correcte de l'en-tête Range, et l'option de liste blanche par IP. Meta place gzip et deflate en tête de liste et énonce l'exigence sans réserve.
Meta ignore-t-il parfois ma règle Disallow du robots.txt pour facebookexternalhit ?
Meta indique que facebookexternalhit peut contourner le robots.txt lors de vérifications de sécurité ou d'intégrité, comme la recherche de malware ou de contenu malveillant. Meta-ExternalFetcher bénéficie de la même exception, car il récupère des liens qu'une personne a demandés directement. Une règle Disallow n'agit pas non plus instantanément : Meta demande jusqu'à 24 heures, le temps que les crawlers puissent mettre le robots.txt en cache.
Mettez cela en pratique avec AdaptlyPost
Cet article vous a-t-il été utile ?
Dites-nous ce que vous en pensez !
Nous voir plus souvent sur Google
Un clic définit AdaptlyPost comme source préférée. Nos articles remontent alors dans vos À la une, en mode IA et dans les aperçus IA.
Avant de partir...
AdaptlyPost
Planifiez vos contenus sur toutes les plateformes
Gérez tous vos comptes de réseaux sociaux en un seul endroit avec AdaptlyPost.
Analyses multiplateforme
Boîte sociale
Assistant IA
Termes connexes du glossaire


D'où vient l.facebook.com et pourquoi les clics arrivent en Direct
Facebook fait passer les clics sortants par l.facebook.com, son link shim. Voici l'effet du rebond sur votre referrer et pourquoi une visite arrive en direct.


Comment les balises Open Graph décident ce que chaque réseau affiche
Les quatre balises Open Graph exigées par le protocole, qui les lit, qui lit les tags twitter: à la place, et comment voir ce qu'un crawler a reçu.


Ce que renvoie l'endpoint content_publishing_limit d'Instagram
L'endpoint content_publishing_limit d'Instagram renvoie quota_usage plus un bloc config contenant quota_total à 50 et quota_duration à 86400 secondes.
Articles Connexes


Ce que le scope instagram_business_content_publish accorde vraiment
Créer des posts Instagram organiques exige le scope instagram_business_content_publish, qui dépend de instagram_business_basic à chaque appel.


Toutes les limites que l'API Reels d'Instagram impose à votre vidéo
Un reel est plafonné à 15 minutes et 300 Mo par l'API Reels d'Instagram, qui refuse tout sauf MOV ou MP4. Chaque spec documentée et l'erreur par infraction.


La session d'upload résumable Instagram et l'hôte rupload
Meta fait démarrer un upload résumable Instagram par upload_type=resumable sur /media, puis un POST vers rupload.facebook.com avec offset et file_size.

