TL;DR, Kurze Antwort
8 Min. Lesezeitfacebookexternalhit ist der Crawler, den Meta schickt, wenn ein Link auf Facebook, Instagram oder im Messenger geteilt wird, und er holt deine Seite, um die Vorschaukarte zu bauen. Meta dokumentiert zwei UA-Strings dafür, vier weitere Meta-Crawler daneben und eine kurze Liste an Serveranforderungen, darunter gzip und deflate, Open-Graph-Tags innerhalb des ersten 1 MB und Toleranz für einen Range-Header. Meta nennt die Allowlist per IP als die sicherere Option und verlinkt diesen Rat dann auf einen Anker der eigenen Seite, an dem keine IP-Liste steht.
Was ist facebookexternalhit?
Meta schickt facebookexternalhit, sobald ein Link zu deiner Seite in einer seiner Apps geteilt wird, und der Crawler holt die Seite, damit Meta die Vorschaukarte bauen kann. Metas Dokumentation Meta Web Crawlers sagt es klar: Der primäre Zweck „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.“ Dieselbe Seite schreibt, der Crawler „gathers, caches, and displays information about the app or website such as its title, description, and thumbnail image.“
Das Teilen muss nicht über einen Share-Button laufen. Meta sagt, der Link „might have been shared by copying and pasting or by using the Facebook social plugin“, eine in einen Messenger-Thread getippte URL löst also denselben Abruf aus wie ein öffentlicher Beitrag.
Welche User-Agent-Strings sendet facebookexternalhit?
Meta dokumentiert zwei, und beide beginnen mit demselben kleingeschriebenen Token. Die Seite sagt, der UA-String in deinen Logdateien „will be similar to one of the following“:
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1Achte auf die Diskrepanz zwischen Fließtext und Wire-Format. Metas Überschriften und Fließtext schreiben den Crawler als FacebookExternalHit in CamelCase, während der String, den dein Server tatsächlich bekommt, kleingeschrieben ist. Matche auf einen Teilstring ohne Rücksicht auf Groß- und Kleinschreibung, nicht auf die CamelCase-Variante.
Meta veröffentlicht außerdem die genaue Anfrage zum Nachspielen, wenn du reproduzieren willst, was der Crawler sieht:
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
-A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "$URL"Worin unterscheidet sich facebookexternalhit von meta-externalagent?
Es sind getrennte User Agents mit getrennten Zwecken, und eine robots.txt-Regel gegen den einen berührt den anderen nicht. Meta dokumentiert inzwischen fünf Crawler auf derselben Seite, und genau diese Aufteilung zählt, wenn du KI-Trainingstraffic loswerden willst, ohne deine Link-Vorschauen zu verlieren.
| Crawler | User-Agent-Token | Zweck laut Meta |
|---|---|---|
| FacebookExternalHit | facebookexternalhit/1.1 | Crawlt in Metas App-Familie geteilte Inhalte und baut die Vorschau |
| Meta-WebIndexer | meta-webindexer/1.1 | Durchsucht das Web, um die Qualität der Meta-AI-Suchergebnisse zu verbessern |
| Meta-ExternalAds | meta-externalads/1.1 | Crawlt für Werbung und andere geschäftsbezogene Produkte und Dienste |
| Meta-ExternalAgent | meta-externalagent/1.1 | Trainiert KI-Basismodelle oder verbessert Produkte durch direktes Indexieren von Inhalten |
| Meta-ExternalFetcher | meta-externalfetcher/1.1 | Holt einzelne Links auf Wunsch einer Person und unterstützt agentische KI |
meta-externalagent zu blockieren kostet dich im Feed nichts, denn die Vorschaukarte baut ein anderer Crawler. Metas eigenes robots.txt-Beispiel nutzt meta-externalagent als Beispielagenten:
User-agent: meta-externalagent
Allow: / # Allow everything
Disallow: /private/ # Disallow a specific directoryMeta nennt kein Datum dafür, wann die KI-Crawler aus facebookexternalhit herausgelöst wurden. Die Seite trägt eine einzige Zeile „Updated: May 21, 2026“ und keine Versionshistorie, die Aufteilung ist also als Tatsache der Gegenwart dokumentiert, ohne ein Vorher und Nachher zum Nachprüfen.

Was verlangt Meta von deinem Server?
Fünf Anforderungen, alle unter Crawler Requirements gelistet, und vier davon reißt man leicht, ohne es zu merken. Dein Server „must use gzip and deflate encodings.“ Alle Open-Graph-Eigenschaften „need to be listed before the first 1 MB of your website or app, or it will be cutoff.“ Der Inhalt muss crawlbar sein „within a few seconds or Facebook will be unable to display the content.“
Die vierte bringt Range-fähige Server zu Fall. Meta sagt, deine App oder Website „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.“ Ein Server, der Range: bytes=0-524288 beachtet, den <head> aber hinter diese Grenze legt, liefert eine technisch korrekte Antwort, in der nichts zu parsen ist. Die fünfte ist die Allowlist, sie steht weiter unten.
Nichts davon betrifft den Inhalt deiner Tags, nur die Frage, ob der Crawler sie erreicht. Die Tag-Inhalte sind ein eigenes Problem, und den vollständigen Satz an Eigenschaften, den Meta und jedes andere Netzwerk liest, behandelt diese Anleitung zu Open-Graph-Tags.
Wie unterscheidest du eine echte facebookexternalhit-Anfrage von einer gefälschten?
An der IP, denn der User-Agent-String ist ein Freitext-Header, den jeder senden kann. Meta sieht das genauso und empfiehlt, „either the user agent strings or the IP addresses (more secure) used by the crawler“ auf eine Allowlist zu setzen.
Dann hört die Dokumentation auf. Dieser Satz verlinkt auf einen Anker namens identify, und die Live-Seite hat überhaupt keinen Abschnitt zu IP-Adressen. Im Quelltext der Seite hängt derselbe identify-Anker an vier verschiedenen Überschriften, darunter der robots.txt-Abschnitt. Meta nennt dir die sicherere Option und zeigt dann ins Leere.
Der Befehl ist veröffentlicht, auf einer ganz anderen Seite. Metas Dokumentation zu den WhatsApp-Webhooks gibt die Abfrage für Metas eigene Routen an:
AdaptlyPost
7-Tage-Testversion starten
Plattformübergreifende Analysen
Sozialer Posteingang
KI-gestützter Assistent
whois -h whois.radb.net -- '-i origin AS32934' | grep '^route' | awk '{print $2}' | sortDiese Autonomous-System-Nummer stimmt. Das Register von ARIN führt AS32934 als ASName: FACEBOOK, registriert am 24. August 2004. Führe die Abfrage selbst aus, und du bekommst den aktuellen Satz an Route-Objekten: Am 12. September 2026 lieferte sie 416 eindeutige IPv4-Präfixe und 633 eindeutige IPv6-Präfixe, von 102.132.100.0/24 bis zu Blöcken wie 2401:db00::/32. Metas eigener Vorbehalt reist mit dem Befehl mit, denn die WhatsApp-Seite warnt, dass „Meta periodically changes its IP addresses.“ Ein Reverse-DNS-Check der anfragenden Adresse ist für die meisten Seiten die günstigere Alternative.
Kannst du facebookexternalhit in der robots.txt blockieren?
Kannst du, und Meta sagt, dass die Sperre nicht immer hält. Die Dokumentation schreibt, dass „the FacebookExternalHit crawler might bypass robots.txt when performing security or integrity checks, such as checking for malware or malicious content.“ Meta-ExternalFetcher trägt dieselbe Ausnahme, weil er Links holt, nach denen eine Person gefragt hat.
Meta bittet außerdem um Geduld bei der Regel selbst: „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.“ Ein Disallow, das du heute Morgen ergänzt hast, erklärt keinen Crawl am Nachmittag.
Den Crawler zu blockieren killt die Vorschau. Der Link wird weiterhin gepostet, er kommt nur als nackte URL ohne Karte an, was optisch dasselbe Ergebnis ist wie ein kaputtes Tag. Der Klick danach läuft so oder so durch Metas Redirect-Ebene, ein eigener Hop mit eigenen Folgen für deine Analytics, aufgeschlüsselt in dieser Analyse von l.facebook.com als Link-Shim.
Warum liefert der Crawler Code 0 oder eine leere Vorschau?
Wegen eines DNS-Eintrags, an den die meisten Seiten nie denken. Metas Link Sharing FAQ sagt es rundheraus: „The crawler will look for a AAAA record and return a response code 0 if it is not found.“ Ein reiner IPv4-Host, der in jedem Browser funktioniert, kann facebookexternalhit nichts zurückgeben.
Drei weitere Fehlerbilder stammen direkt aus derselben FAQ. Bilder werden „cached asynchronously, so the image may not render the first time someone shares your content“, und Metas Abhilfe ist das Vorab-Cachen, indem du mit dem Sharing Debugger unter /tools/debug/ einen Scrape auslöst. Ein Bild, das als weißer Kasten erscheint, ist „no longer available, is too big or could not be fetched“, und die Obergrenze liegt bei 8 MB. Ein Bild zwischen 200 x 200 und 600 x 315 Pixeln erscheint als kleines Quadrat statt als Karte.
Das letzte ist endgültig. Sobald ein Link geteilt wurde und „there have been more than 50 interactions with the post (comments, likes, shares, etc.), then the title cannot be changed.“ Metas erklärter Grund ist, zu verhindern, dass eine Seite die Geschichte unter denen austauscht, die bereits mit ihr interagiert haben. Jede andere Eigenschaft bleibt editierbar. Bring den Titel in Ordnung, bevor der Link rausgeht, denn nach 50 Interaktionen editierst du ein Feld, dessen Aktualisierung niemand zu sehen bekommt.
Wenn dieselbe URL gleichzeitig an mehrere Netzwerke geht, veröffentlicht adaptlypost einen Beitrag auf mehreren Konten, und jedes Netzwerk lässt danach seinen eigenen Crawler nach eigenem Zeitplan auf diese eine URL los. Das Crawl-Verhalten bleibt Sache der Plattform. Es ist dieselbe Arbeitsteilung wie beim Link-Wrapping, wo X jede URL in einen t.co-Link umschreibt, sobald du postest, und wo dein eigenes Kampagnen-Tracking diese Umschreibung überstehen muss, was dafür spricht, UTM-Parameter an die URL zu hängen, bevor sie überhaupt einen Composer erreicht.
Häufig gestellte Fragen
Führt facebookexternalhit JavaScript aus?
Meta sagt es nicht. Die Dokumentation beschreibt einen Abruf mit Range-Header, ein paar Sekunden Toleranz und eine 1-MB-Grenze dafür, wo Open-Graph-Eigenschaften stehen dürfen, und erwähnt Rendering nie. Liefere deine og:-Tags in der Serverantwort aus, statt sie clientseitig einzufügen.
Ist facebookexternalhit derselbe Crawler, den Instagram und Messenger nutzen?
Ja. Meta nennt alle drei in einem Satz und sagt, der Crawler kümmere sich um Inhalte „shared on one of Meta's family of apps, such as Facebook, Instagram, or Messenger.“ Ein User Agent deckt den Vorschau-Crawl über diese Oberflächen hinweg ab.

Warum trifft facebookexternalhit meinen Server in Schüben?
Meta veröffentlicht dafür keine Crawl-Rate, kein Anfragebudget und keine Unterstützung für crawl-delay. Die Dokumentation listet Zweck, User-Agent-Strings, Serveranforderungen und den Umgang mit robots.txt, und hört dort auf. Rate Limiting per IP gegen den Routensatz von AS32934 ist der einzige Hebel, den die Dokumentation dir lässt.
Sollte ich facebookexternalhit erlauben und meta-externalagent blockieren?
Genau für diese Kombination existieren die getrennten User Agents. facebookexternalhit zu erlauben hält die Vorschaukarten auf Facebook, Instagram und Messenger am Laufen, während ein Disallow: / unter User-agent: meta-externalagent den Crawler adressiert, den Meta als Trainer von KI-Basismodellen beschreibt.
Was bedeutet der Range-Header in einer Crawler-Anfrage?
Er fragt deinen Server nach einem Byte-Fenster statt nach dem ganzen Dokument, und Metas Beispielanfrage nutzt Range: bytes=0-524288, die ersten 512 KB. Meta akzeptiert beides: den Header beachten und die angeforderten Bytes mit allen nötigen Eigenschaften darin zurückgeben, oder den Header komplett ignorieren und die volle Antwort schicken.
Wie zwinge ich Meta, eine URL neu zu crawlen?
Schick sie durch den Sharing Debugger unter /tools/debug/, den Meta als Weg nennt, einen Scrape auszulösen, oder rufe die Sharing API auf. Metas eigene Best-Practices-Seite beschreibt den Debugger als Werkzeug für Seiten, die ihre Tags häufiger aktualisieren müssen als im üblichen 24-Stunden-Rhythmus.
AdaptlyPost
7-Tage-Testversion starten
Plattformübergreifende Analysen
Sozialer Posteingang
KI-gestützter Assistent
Wird ein Link, der privat in einem Messenger-Chat geteilt wird, genauso gecrawlt wie ein öffentlicher Post?
Meta sagt, ein Share kann durch Kopieren und Einfügen eines Links oder über das Facebook-Social-Plugin entstehen, nicht nur über einen Teilen-Button. Eine URL, die in einen Messenger-Chat eingefügt wird, löst denselben facebookexternalhit-Abruf aus wie ein öffentlich auf Facebook geposteter Link. Meta dokumentiert keinen eigenen Crawl-Pfad für eine private Nachricht, nur die Familie von Apps, aus der ein Share stammen kann.
Warum erscheint facebookexternalhit in meinen Server-Logs klein geschrieben?
Metas Dokumentation schreibt den Crawler in Überschriften und Fließtext als FacebookExternalHit, aber der tatsächlich gesendete String ist klein geschrieben: facebookexternalhit/1.1. Eine Filter- oder Allowlist-Regel, die auf die CamelCase-Schreibweise achtet, übersieht echte Anfragen. Prüfe stattdessen auf einen Substring ohne Berücksichtigung der Groß- und Kleinschreibung.
Welche Kompression verlangt facebookexternalhit von meinem Server?
Metas Crawler-Anforderungen verlangen, dass dein Server gzip- und deflate-Kodierung unterstützt. Das steht neben den übrigen Punkten der Liste: Open-Graph-Tags innerhalb des ersten 1 MB, eine Seite, die innerhalb weniger Sekunden crawlbar ist, korrekter Umgang mit dem Range-Header und die Option der IP-Allowlist. Meta nennt gzip und deflate an erster Stelle und formuliert die Anforderung ohne Einschränkung.
Ignoriert Meta manchmal meine Disallow-Regel in der robots.txt für facebookexternalhit?
Meta sagt, facebookexternalhit kann die robots.txt umgehen, wenn er Sicherheits- oder Integritätsprüfungen durchführt, etwa auf Malware oder schädliche Inhalte. Meta-ExternalFetcher hat dieselbe Ausnahme, weil er Links abruft, die eine Person direkt angefragt hat. Eine Disallow-Regel wirkt zudem nicht sofort: Meta bittet um bis zu 24 Stunden, weil Crawler die robots.txt so lange zwischenspeichern können.
Setze das mit AdaptlyPost in die Praxis um
War dieser Artikel hilfreich?
Teilen Sie uns Ihre Meinung mit!
Sieh uns öfter bei Google
Ein Klick macht AdaptlyPost zu einer bevorzugten Quelle. Unsere Artikel stehen dann weiter oben in deinen Top-Meldungen, im KI-Modus und in den KI-Übersichten.
Bevor Sie gehen...
AdaptlyPost
Planen Sie Ihre Inhalte für alle Plattformen
Verwalten Sie alle Ihre Social-Media-Konten an einem Ort mit AdaptlyPost.
Plattformübergreifende Analysen
Sozialer Posteingang
KI-gestützter Assistent
Verwandte Glossarbegriffe


Woher l.facebook.com kommt und warum Klicks als Direct landen
Facebook leitet ausgehende Klicks über l.facebook.com, seinen Link-Shim. Was der Umweg mit Ihrem Referrer macht und warum ein Besuch als Direct landet.


Wie Open-Graph-Tags entscheiden, was jedes Netzwerk zeigt
Die vier Open-Graph-Tags, die das Protokoll verlangt, wer sie liest, wer stattdessen twitter:-Card-Tags liest, und wie du siehst, was ein Crawler bekam.


Was Instagrams content_publishing_limit-Endpunkt zurückgibt
Instagrams Endpunkt content_publishing_limit liefert quota_usage plus einen config-Block mit quota_total 50 und quota_duration 86.400 Sekunden.
Verwandte Artikel


Was der Scope instagram_business_content_publish wirklich gewährt
Der Scope instagram_business_content_publish erlaubt einer App organische Instagram-Posts und hängt bei jedem Aufruf an instagram_business_basic.


Jedes Limit, das die Instagram Reels API deinem Video setzt
Bei der Instagram Reels API endet ein Reel bei 15 Minuten und 300 MB, und nur MOV oder MP4 kommen durch. Alle Specs plus der Fehler je Verstoß.


Die Session für den Instagram Resumable Upload und der rupload-Host
Ein Instagram Resumable Upload startet mit upload_type=resumable auf /media, dann folgt ein POST an rupload.facebook.com mit offset- und file_size-Headern.

