Der Facebook-Crawler

Der Facebook-Crawler führt ein Scraping für den HTML-Content einer Website durch, die durch Kopieren und Einfügen des Links oder durch Soziale Plug-ins von Facebook auf der Website geteilt wurde. Der Crawler erfasst Informationen über die Website, wie zum Beispiel Titel, Beschreibung und Miniaturbild, speichert diese zwischen und zeigt sie an.

Crawler-Anforderungen

  • Dein Server muss gzip- und deflate-Kodierungen verwenden.
  • Der Crawler liest nur die ersten 1 MB einer Seite aus. Eventuelle Open Graph-Eigenschaften müssen also vor diesem Punkt aufgeführt sein.
  • Stelle sicher, dass der Crawler das Scraping des Contents innerhalb weniger Sekunden durchführen kann. Andernfalls kann Facebook den Content nicht anzeigen.
  • Deine Webseite 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 zur Whitelist hinzu.

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

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
... 

Fehlerbehebung

Wenn der Website-Content zum Zeitpunkt des Scrapings nicht verfügbar ist, kannst du bei seiner Verfügbarkeit ein erneutes Scraping erzwingen, indem du die URL in den Sharing Debugger eingibst oder die Graph API verwendest.

Mit dem folgenden Code kannst du eine Crawler-Anfrage simulieren, falls du Probleme mit deiner Webseite beheben musst:

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

Crawler-Ratenbegrenzungen

Du kannst Seiten und Objekte kennzeichnen, um anzugeben, wie lange der Facebook-Crawler wartet, bis er nach neuen Inhalten sucht. Verwende die Objekteigenschaft og:ttl, um den Crawler-Zugriff zu beschränken, wenn unser Crawler zu aggressiv vorgeht.