Der Facebook-Crawler

Der Facebook-Crawler „crawlt“ den HTML-Content einer App oder Website, die durch Kopieren und Einfügen des Links oder durch ein Soziales Plug-in von Facebook auf der Facebook geteilt wurde. Der Crawler erfasst, cacht und zeigt Informationen über die App oder Website, wie zum Beispiel Titel, Beschreibung und Miniaturbild, an.

Crawler-Anforderungen

  • Dein Server muss gzip- und deflate-Kodierungen verwenden.
  • Der Crawler liest nur die ersten 1 MB deiner Website oder App aus. Eventuelle Open Graph-Eigenschaften müssen also vor diesem Punkt aufgeführt sein.
  • Stelle sicher, dass der Content innerhalb weniger Sekunden „gecrawlt“ werden kann. Andernfalls kann Facebook den Content nicht anzeigen.
  • Deine App oder Website sollte entweder eine Antwort erstellen und zurückgeben, die alle erforderlichen Eigenschaften entsprechend den im Range-Header der Crawler-Anfrage angegebenen Byte enthält, oder sie sollte den Range-Header vollständig ignorieren.
  • Füge entweder die vom Crawler verwendeten Nutzer-Agenten-Strings oder die IP-Adressen (sicherer) zur Positivliste hinzu.
  • Sorge dafür, dass deine App oder Website dem Facebook-Crawler Zugriff auf die mit deiner App bzw. Website verknüpfte Datenschutzrichtlinie gewährt.

Crawler-IPs und Nutzer-Agenten

Die Nutzer-Agenten-Strings des Facebook-Crawlers:

  • facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
  • facebookexternalhit/1.1
  • facebookcatalog/1.0

Führe zum Abrufen einer aktuellen Liste mit von Crawler verwendeten IP-Adressen den folgenden Befehl aus.

whois -h whois.radb.net -- '-i origin AS32934' | grep ^route  

Diese IP-Adressen ändern sich häufig.

Beispielantwort

...
route:      69.63.176.0/21
route:      69.63.184.0/21
route:      66.220.144.0/20
route:      69.63.176.0/20
route6:     2620:0:1c00::/40
route6:     2a03:2880::/32
route6:     2a03:2880:fffe::/48
route6:     2a03:2880:ffff::/48
route6:     2620:0:1cff::/48
... 

Problembehebung

Wenn dein App- oder Website-Content zum Zeitpunkt des Crawlings nicht verfügbar ist, kannst du bei seiner Verfügbarkeit ein Crawl erzwingen, indem du die URL in den Sharing Debugger eingibst oder die Sharing API verwendest.

Mit dem folgenden Code kannst du eine Crawler-Anfrage simulieren:

curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "$URL"