Il crawler di Facebook

Per la maggior parte, i contenuti sono condivisi su Facebook come una pagina Web. La prima volta che qualcuno condivide un link, il crawler di Facebook estrae il codice HTML dell'URL per raccogliere, memorizzare nella cache e mostrare le informazioni su Facebook, come titolo, descrizione e miniatura.

Accesso del crawler

Il crawler di Facebook deve essere in grado di accedere ai contenuti per estrarli e condividerli correttamente. Pertanto, deve poter vedere le tue pagine. Se richiedi l'accesso o offri un accesso limitato ai contenuti, dovrai autorizzare il nostro crawler. Inoltre, fai in modo che non sia soggetto ai meccanismi di protezione dagli attacchi DDoS.

Se i contenuti non risultano disponibili al momento dell'estrazione, puoi forzarla quando lo saranno nuovamente inserendo l'URL nell'analizzatore di condivisione.

Identificazione del crawler

Puoi identificare il crawler di Facebook usando una delle seguenti stringhe user agent:

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

o

facebookexternalhit/1.1

Puoi taggare uno di questi user agent per fornire al crawler una versione non pubblica della pagina, con soli metadati e non contenuti veri e propri. In questo modo puoi ottimizzare le prestazioni e proteggere i contenuti con paywall.

A partire dal 28 maggio 2014, potresti vedere un crawler con la seguente stringa user agent:

Facebot

Facebot è il robot di Facebook dedicato al Web crawling che ti aiuta a migliorare le prestazioni pubblicitarie. Facebot è progettato per essere rispettoso. Il robot prova ad accedere ai server Web una sola volta a intervalli di pochi secondi, in conformità con gli standard del settore e nel rispetto delle impostazioni del tuo file robots.txt.

Tieni presente che Facebot controlla le modifiche apportate al file robots.txt del tuo server solo un paio di volte al giorno, pertanto gli eventuali aggiornamenti non vengono registrati subito, ma al rilevamento successivo.

Rate limiting del crawler

Puoi aggiungere un'etichetta alle pagine e agli oggetti per definire quanto il crawler di Facebook deve aspettare prima di controllare la presenza di nuovi contenuti. Usa la proprietà og:ttl degli oggetti per limitare l'accesso del crawler, se risulta troppo aggressivo.

Garanzia di accesso al crawler

Esistono due modi per concedere l'accesso al crawler:

  1. Autorizzare le stringhe user agent descritte in precedenza, per cui non è necessaria alcuna modifica.
  2. Autorizzare gli indirizzi IP usati dal crawler, opzione più sicura:

Esegui questo comando per ottenere la lista degli indirizzi IP usati dal crawler.

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

Restituirà una lista di indirizzi IP che cambiano spesso:

# 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 

Latenza appropriata

Controlla che le risorse a cui fanno riferimento gli URL possano essere recuperate velocemente dal crawler, in non più di qualche secondo. Se non è questo il caso, Facebook non sarà in grado di mostrare la risorsa.

URL canonici

Il nostro crawler recupera i contenuti da condividere usando l'URL designato come URL canonico.

Come best practice, etichetta le variazioni della pagina con l'URL canonico usando i tag og:url (preferibile) o link rel="canonical". Anche il codice HTML dell'URL canonico deve contenere il tag og:url per essere designato come risorsa canonica.

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

In questo modo tutte le azioni, come i "Mi piace" e le condivisioni, saranno aggregate nello stesso URL piuttosto che suddivise tra le diverse versioni della pagina.

Inoltre, le diverse versioni degli stessi contenuti saranno trattate allo stesso modo, anche se ospitate in sottodomini separati o accessibili tramite http:// e https://.

Se necessario, il nostro crawler seguirà una catena di reindirizzamenti per usare l'URL canonico.

Migrazione dei contenuti/aggiornamento degli URL

Eseguendo la migrazione dei contenuti da un URL a un altro, tale migrazione non sarà automatica anche per i "Mi piace" e le condivisioni. Per mantenere il totale dei "Mi piace" e delle condivisioni, segui questi due passaggi:

1. Escludi il crawler di Facebook dal reindirizzamento HTTP

Usa un reindirizzamento HTTP 301 o 302 per reindirizzare gli utenti al nuovo URL quando visitano quello vecchio.

Il crawler dovrà essere in grado di accedere alla vecchia pagina, pertanto escludi la stringa user agent dal reindirizzamento e invia solo un reindirizzamento HTTP ai client dei crawler che non appartengono a Facebook.

Il codice HTML del vecchio URL dovrà ancora contenere i tag Open Graph (incluso il tag og:url, che punta a se stesso) e restituire una risposta HTTP 200 quando il crawler lo caricherà.

Inoltre, assicurati che il tuo record AAAA sia aggiornato correttamente quando modifichi l'URL poiché il crawler ne cercherà uno e risponderà con un codice 0 se non lo trova.

2. Usa la vecchia pagina come URL canonico per quella nuova

Aggiungi il seguente tag al codice HTML del nuovo URL:

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

È preferibile usare il tag og:url, ma in questo caso puoi usare anche rel=canonical.

In questo modo comunicherai al crawler che l'URL canonico si trova al vecchio indirizzo e potrà usarlo per generare il numero di "Mi piace" sulla pagina. I nuovi "Mi piace", presenti su qualsiasi indirizzo, saranno aggregati in entrambe le posizioni.

L'URL precedente deve continuare a mostrare un documento con tag Open Graph e restituire una risposta HTTP 200, almeno durante il caricamento da parte del crawler di Facebook. L'URL precedente deve contenere il proprio tag og:url che punti a se stesso. Per fare in modo che altri client vengano reindirizzati quando accedono all'URL, devi inviare la risposta HTTP 301 a tutti i client dei crawler che non appartengono a Facebook.

Puoi scoprire come riconoscere il crawler di Facebook nella nostra guida alle best practice sulla condivisione.