Der Facebook-Crawler

Oft werden Inhalte auf Facebook in Form einer Webseite geteilt. Wenn jemand einen Link zum ersten Mal teilt, liest der Facebook-Crawler die HTML unter der entsprechenden URL aus, um Informationen zum Inhalt, wie beispielsweise Titel, Beschreibung und Miniaturbild, abzurufen, zwischenzuspeichern und auf Facebook anzuzeigen.

Crawler-Zugriff

Der Facebook-Crawler erfordert den Zugriff auf deinen Inhalt, um ihn ordnungsgemäß auslesen und teilen zu können. Deine Seiten müssen also für den Crawler sichtbar sein. Wenn der Zugriff auf deinen Inhalt eine Anmeldung erfordert oder anderweitig eingeschränkt ist, musst du unseren Crawler auf eine Whitelist setzen. Du solltest ihn darüber hinaus von DDoS-Abwehrmechanismen ausschließen.

Wenn der Inhalt zum Zeitpunkt des Auslesens nicht verfügbar ist, kannst du bei seiner Verfügbarkeit eine erneute Auslesung erzwingen, indem du die URL in den Sharing Debugger eingibst.

Identifizieren des Crawlers

Der Facebook-Crawler lässt sich anhand eines der folgenden User-Agent-Strings erkennen:

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

oder

facebookexternalhit/1.1

Du kannst einen dieser User-Agents ansteuern, um dem Crawler eine nicht öffentliche Version deiner Seite bereitzustellen, die nur Metadaten, aber keinen tatsächlichen Inhalt enthält. So kannst du die Performance optimieren und kostenpflichtige Inhalte schützen.

Seit 28. Mai 2014 findest du den Crawler auch mit folgendem User-Agent-String:

Facebot

Facebot ist der Web-Crawling-Roboter von Facebook, der dazu beiträgt, die Werbeanzeigen-Performance zu verbessern. Facebot ist auf Höflichkeit ausgelegt. Er tätigt Zugriffsversuche auf einen Webserver im Abstand von einigen Sekunden, was den Branchenstandards entspricht, und beachtet deine robots.txt-Einstellungen.

Beachte, dass Facebot nur ein paar Mal pro Tag die robots.txt-Datei deines Servers auf Änderungen überprüft. Wenn du also Änderungen vornimmst, werden diese erst bei der nächsten Überprüfung beachtet und nicht sofort.

Crawler-Ratenbegrenzung

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

Gewähren des Crawler-Zugriffs

Es gibt zwei Möglichkeiten, dem Crawler Zugriff zu gewähren:

  1. Hinzufügen der oben aufgeführten User-Agent-Strings zur Whitelist (hiernach sind keine weiteren Aktionen erforderlich)
  2. Hinzufügen der vom Crawler verwendeten IP-Adressen zur Whitelist (dies ist sicherer):

Führe diesen Befehl aus, um eine aktuelle Liste der vom Crawler verwendeten IP-Adressen abzurufen.

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

Hierdurch wird eine Liste der IP-Adressen zurückgegeben, die sich oft ändern:

# For example only - over 100 in total
31.13.24.0/21 
66.220.144.0/20    
2401:db00::/32  
2620:0:1c00::/40  
2a03:2880::/32 

Gewährleisten einer akzeptablen Latenz

Du musst sicherstellen, dass die in den URLs enthaltenen auszulesenden Ressourcen in annehmbarer Zeit – also nicht mehr als ein paar Sekunden – vom Crawler abgerufen werden können. Wenn der Crawler hierzu nicht in der Lage ist, kann Facebook die Ressource nicht anzeigen.

Kanonische URLs

Unser Crawler ruft Inhalte zum Teilen ab, indem er eine URL auflöst, die du als kanonische URL angibst.

Gemäß unseren Best Practices solltest du alle Varianten einer Webseite mit der kanonischen URL mit einem og:url-Tag (bevorzugt) oder mit link rel="canonical" kennzeichnen. Der HTML-Code für die kanonische URL selbst sollte darüber hinaus ein og:url-Tag enthalten, um sich selbst als kanonische Ressource zu kennzeichnen.

<meta property="og:url" content="https://example.com/path" />

So wird gewährleistet, dass alle Handlungen, wie z. B. „Gefällt mir“-Angaben und Teilvorgänge, unter derselben URL zusammengefasst werden, anstatt sich auf mehrere Versionen einer Seite zu verteilen.

Es bedeutet darüber hinaus, dass verschiedene Versionen desselben Inhalts gleich behandelt werden, selbst wenn sie auf separaten Subdomains gehostet werden oder wenn sie sowohl über http:// als auch über https:// erreichbar sind.

Sofern erforderlich, folgt unser Crawler einer Reihe von Umleitungen zur Auflösung der kanonischen URL.

Migrieren von Inhalt/Aktualisieren von URLs

Wenn du deinen Inhalt von einer URL zu einer anderen migrierst, werden „Gefällt mir“-Angaben und Teilvorgänge nicht automatisch mit migriert. Du kannst die entsprechenden Informationen mit den beiden folgenden Schritten beibehalten:

1. Ausschließen des Facebook-Crawlers von der HTTP-Umleitung

Verwende eine HTTP-301- oder -302-Umleitung, um Personen zur neuen URL umzuleiten, wenn sie deine alte URL besuchen.

Der Crawler muss weiterhin auf die alte Seite zugreifen können. Schließe den User-Agent des Crawlers also von der Umleitung aus und sende die HTTP-Umleitung nur an Clients, bei denen es sich nicht um den Facebook-Crawler handelt.

Die HTML der alten URL muss nach wie vor die Open Graph-Tags enthalten (einschließlich eines og:url-Tags, das auf sich selbst verweist) und eine HTTP-200-Antwort zurückgeben, wenn der Crawler sie lädt.

Stelle außerdem sicher, dass dein AAAA-Datensatz richtig aktualisiert wird, wenn du deine URL änderst, da der Crawler danach sucht und den Antwortcode 0 zurückgibt, wenn er ihn nicht findet.

2. Verwenden der alten Seite als kanonische URL für die neue Seite

Füge folgendes Tag zur HTML der neuen URL hinzu:

<meta property="og:url" content="https://example.com/old-url" />

Zwar ist das og:url-Tag vorzuziehen, jedoch funktioniert diese Methode auch mit rel=canonical.

So wird unserem Crawler mitgeteilt, dass sich die kanonische URL am alten Ort befindet. Der Crawler verwendet sie daraufhin, um die Anzahl der „Gefällt mir“-Angaben auf einer Seite zu generieren. Neue „Gefällt mir“-Angaben unter einer der URLs werden an beiden Orten zusammengefasst.

Die alte URL muss natürlich weiterhin ein Dokument mit Open Graph-Tags darstellen und eine HTTP-200-Antwort zurückgeben, zumindest wenn sie über den Facebook-Crawler geladen wird. Die alte URL sollte ein eigenes og:url-Tag enthalten, das auf sie selbst verweist. Wenn du willst, dass andere Clients weitergeleitet werden, wenn sie die URL aufrufen, musst du deine 301-HTTP-Antwort an alle Nicht-Facebook-Crawler-Clients senden.

In unserem Leitfaden Best Practices für das Teilen erfährst du, wie du den Facebook-Crawler erkennen kannst.