Disabilita o bypassa il rilevamento delle funzionalità per Googlebot (servendo l'app JS ai crawler)

Sto cercando di far sì che Discourse serva completamente l’app JS a Googlebot: ci sto andando molto vicino.

Per gentile concessione di @pfaffman e eseguendo il codice sottostante (nella console rails) sono riuscito a far apparire l’app JS quando uso Chrome e falsifico l’user agent in Googlebot o Googlebot smartphone

SiteSetting.non_crawler_user_agents="trident|webkit|gecko|chrome|safari|msie|opera|goanna|discourse" + 'rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse'

Tuttavia, quando testo con lo strumento di Google per la compatibilità con i dispositivi mobili (o l’ispezione dell’URL nella console di ricerca di Google) mi dà uno screenshot vuoto con l’HTML sottostante

Bing è simile, ma con loro mostra il contenuto. Penso che Bing mostri il contenuto perché il suo crawler non è “mobile”. Post pertinente qui di @sam

Secondo @david e questo post sembrerebbe che il “rilevamento delle funzionalità” sia il colpevole

Sono cautamente ottimista sul fatto che ci sia una semplice soluzione. Ogni 10-20 tentativi quando si utilizza lo strumento, Googlebot renderizza correttamente l’APP.

La mia teoria è che, poiché Googlebot è notoriamente noto per non scaricare tutte le risorse quando accede a una pagina, quel JS specifico (che contiene il rilevamento delle funzionalità e causa il ripristino) non viene caricato e quindi la pagina appare bene

Quindi, in conclusione, come si potrebbe disabilitare il rilevamento delle funzionalità per Googlebot (o, se è più facile, per tutti i crawler/bot)?

Modifica Nel caso in cui io stia usando la terminologia sbagliata, quando si parla di “rilevamento delle funzionalità” su meta, ci si riferisce al rilevamento del browser? (forse con file come browser-detect.js e altre dipendenze)

Oppure “rilevamento delle funzionalità” è un termine generico per ciò che Discourse fa quando cerca di comprendere la tecnologia che sta cercando di accedere all’app.

C’è un motivo per cui vuoi servire la versione JS a Googlebot? Google probabilmente non sarà in grado di trovare viste di elenchi impaginati, inclusa la home page impaginata e gli argomenti che hanno più di un certo numero di post. Nella visualizzazione del bot, gli elenchi degli argomenti sono indicizzabili, ma Googlebot probabilmente non attiverà lo scorrimento infinito.

Sono contento che tu lo abbia chiesto, sì, penso che sia il motivo della mia “leggera penalizzazione” da parte di Google

Permettimi di elaborare.

Abbiamo avuto un aggiornamento del sito molto sciatto intorno a settembre/ottobre 2019, il sito principale è crollato proprio allora.

Non ci siamo mai ripresi. Il sito non è mai stato migliore per quanto riguarda la SEO. Certo, non è perfetto, ma siamo anni luce avanti rispetto ad alcuni concorrenti. Siti che utilizzano le nostre immagini e testi vecchi di molti anni ci superano per pagine. Siamo sulla terza e loro forse sono in cima alla seconda pagina.

Ho consultato innumerevoli blog, video, post sulla SEO e ho persino avuto qualche scambio con John Mueller (su Reddit).

Il massimo che ho ottenuto da lui è stato che potrebbero esserci “problemi di qualità”. Abbiamo migliorato notevolmente il sito principale da gennaio di quest’anno. Nemmeno un sussulto nel traffico organico.

Discourse: L’avevo installato nel 2013 e me ne ero dimenticato. Controllavo a malapena il suo traffico.

Se guardi le analisi del sito principale, vedrai un brusco calo verso la fine del grafico. Questo è il momento in cui ho iniziato a lavorare su Discourse.

Quando ho provato prerender.io su discourse, il posizionamento del sito principale era tutto un caos. A volte saltava 10-15 posizioni durante la notte, poi tornava indietro. (Ho smesso di usare prerender poiché non riuscivano a renderizzare il menu principale, il login, ecc.)

Da quello che ho letto online, questo è un segno che Google non sa dove posizionarti. Dicono che basta un “po’ di più” e sei dalla parte giusta dell’algoritmo.

Niente di ciò che abbiamo fatto negli ultimi 3 anni ha innescato queste fluttuazioni nei SERP.

(Giocare con lo strumento di disconoscimento di Google, pulire il codice, URL puliti, struttura del sito, collegamenti interni, social, contenuti, ecc.)

Potresti sostenere, perché Google non ti ha penalizzato nel 2018? (avevi discourse sul sottodominio anche allora)

Beh, penso che sia stata una moltitudine di fattori unici del sito, la sua storia, il profilo dei link. che lo hanno fatto crollare alla fine del 2019. Sembra che Google abbia riorganizzato il posizionamento del sito e forse abbia dato più peso agli URL di discourse rispetto a quanto facesse in precedenza.

E il fatto è… amo Discourse. Soprattutto ora che sono stato di più su meta, tutti questi fantastici plugin e funzionalità di cui non avevo idea esistessero. Wiki, pagamenti in abbonamento, indice, e ora la chat!!

Quindi allontanarsi da discourse non è davvero un’opzione, troppo investito a questo punto.

Ho considerato questo e sono disposto a correre il rischio. So che non sarà perfetto, ma da quello che leggo e guardo, Google è diventato davvero bravo a capire il JS di recente.

Hanno persino deprecato lo schema di crawling ajax

I tempi sono cambiati. Oggi, finché non blocchi Googlebot dall’indicizzare i tuoi file JavaScript o CSS, siamo generalmente in grado di renderizzare e comprendere le tue pagine web come i browser moderni.

Nota a margine: Discourse ha un’impostazione per il crawling ajax, immagino che alla fine dovrà andare


Quindi il piano è servire l’app a Google, fare del mio meglio per risolvere eventuali problemi SEO che potrebbero sorgere e godermi l’impennata di traffico.

Potrò quindi riportare i risultati su meta e sostenere che Discourse dovrebbe considerare l’ottimizzazione del JS per Google.

Ad esempio, forse qualcosa come questo (dal blog di Google) aiuterebbe con i problemi di paginazione e scorrimento.

E mantenere la versione non-crawler per i vecchi browser.

Se posso aggiungere… :smirk:

Prima ancora di inviare la versione JS a Google, ci stavo armeggiando.

Ho testato l’invio della versione JS a Google all’inizio di aprile circa. Ricordo che restituiva un risultato la maggior parte delle volte (anche se sembrava rotto). Usando lo strumento mobile di Google.

Pensavo potesse essere questo commit - ho apportato le modifiche al codice, riavviato e il comportamento era lo stesso.

Forse qualcuno ricorda una PR o un commit negli ultimi due mesi che potrebbe aver alterato il rilevamento del browser e/o del crawler?

Modifica Scusate per tutti gli aggiornamenti, più informazioni sono meglio, vero?

Mentre provavo prerender il mese scorso, Google ha finito per aggiungere 2000 URL alla copertura del forum. ( principalmente questi URL )

Sono stati tutti serviti in 0,005 secondi, prerender aveva gli URL memorizzati nella cache e pronti per l’accesso da parte di googlebot. Quindi li ha presi tutti velocemente.

Il punto è, forse il crawler si è “molto abituato” al no JS e ha impegnato risorse per ottenere quelle 2k pagine.

Quindi ora sta accedendo al sito in questo modo finché non capisce le cose (e ha bisogno di accedere con più JS), è solo una teoria.

Stavi lavorando su qualcosa che ha cambiato il modo in cui Discourse viene scansionato, come provare a usare prerender su di esso, allora?

Se controlli il tuo report sulle landing page in GA, ti dà qualche indizio su quale parte del sito è stata interessata?


Per il sito principale, se John Muller ha suggerito che ci sono problemi di qualità, esaminerei la loro documentazione sulla qualità e ti chiederesti se qualcuna di esse si applica.

Da una rapida occhiata, hai catene di reindirizzamento dal sito del 2019 che potrebbero essere più lunghe di quanto Google possa scansionare.

Un candidato per una penalità improvvisa è che gli URL del sito del 2019 hanno 6 reindirizzamenti, ma Google dice di mantenerli “inferiori a 5” o potrebbero non seguire i reindirizzamenti. Ciò potrebbe aver fatto sembrare a Google che le vecchie pagine siano scomparse dal Web.

Esempio:

curl -sSL -D - http://flynumber.com/virtual-phone-number/united-states_alexandria_1-318 -o /dev/null -H 'User-Agent: header_bot'

I reindirizzamenti sono probabilmente i più facili da correggere. Invece di farli in questo modo:

/a/b/c/d/e/final-destination

Lo farei in questo modo:

/a/final-destination
/b/final-destination
/c/final-destination
/d/final-destination
/e/final-destination

(Sembra che tu abbia anche pagine porta e sinonimizzazione automatica, ma proverei prima a risolvere il problema più semplice, poiché potrebbe essere sufficiente.)

Grazie, Josh, apprezzo il tuo feedback.

Ottima osservazione e, sebbene mal eseguito, richiedendo molti mesi, Google sembra aver capito quali pagine significano cosa.

In altre parole, alla fine, ho iniziato a vedere sempre più pagine a cui ho effettuato il 301 per le parole chiave utilizzate nelle vecchie pagine.

Questo ha molto senso e vedrò come posso implementarlo. Al momento, la console di ricerca non mostra che il crawler segua spesso il 301. Sembra che quando il ranking migliora, seguiranno più 301. Causalità senza correlazione, forse.


Non è assolutamente una critica a Discourse, semplicemente non sono facilmente convinto da “migliaia di utenti Discourse hanno un ottimo traffico organico”.

Google non ce lo dirà davvero.

Dobbiamo sempre ricordare che Google è un algoritmo, non guarda le cose dagli occhi umani.

Sebbene entrambe le versioni condividano contenuti simili e Google sappia che non si tratta di cloaking dannoso, devono comunque aggiustare il ranking.

Una versione ha un aspetto migliore, funziona meglio e fornisce un senso di struttura dei link interni. L’altra è un feed RSS glorificato.

Google non ha idea che io abbia questo forum elegante che funziona su tutti i dispositivi [moderni], incoraggia veramente il dibattito ed è una delle cose più interessanti che internet abbia mai creato.

Mi piace sempre usare il link “Powered by discourse” do-follow nella versione per crawler. (solo perché è facile)

Di nuovo, so che non è dannoso, ma devi guardarlo attraverso gli occhi di Google. Tu FlyNumber (non https://community.cloudflare.com/) ci stai fornendo questa versione per crawler con un link esterno che non mostri ai normali browser.

Potrei benissimo immaginare che l’algoritmo capisca cosa sta succedendo e ignori il link esterno per il dominio cloudflare (dato che è un’autorità tale)

Non è come se ciò che Google applica a Cloudflare si applicasse a me.

Qualcuno ti ha pagato per questo link esterno che mostri ai bot (ma non vuoi mostrare ai normali utenti?) riguarda più come potrebbero guardare il sito. Non sto dicendo che sia così, ma è una possibilità che vorrai eliminare.

In termini più semplici, la versione per crawler non ha un menu o una vera struttura.

Questo è il contenuto che l’algoritmo pensa che tu voglia servire agli utenti finali.

Da una prospettiva molto generale, non vedo l’algoritmo premiare questo.

Forse è ora di iniziare a considerare una vera revisione della versione per crawler. Almeno aggiungi il menu principale e gli argomenti suggeriti in fondo.

Interessante aggiornamento: Google ha aggiunto “JSON” ai “tipi di file” nelle statistiche di scansione per la mia istanza Discourse. “Javascript” è un “tipo di file” separato.

Seguirò da vicino, ma mi piacerebbe comunque che questo venisse visualizzato correttamente nello strumento di Google.

Sto iniziando a pensare che la mia logica fosse errata fin dall’inizio. Spiegherebbe perché nessuno ha risposto: forse non c’è niente che non va.

Ecco un nuovo articolo su come sia normale che Google mostri una pagina bianca nello screenshot

Ora posso vedere l’HTML “scansionato” per la home page, questa è la versione indicizzata, non da “Test live”: mostra la pagina completa. Tieni presente che Google ha capito questo mentre serviva loro l’intera app JS.

Ciò che è interessante è che sono scesi fino al 27° post nella home page per quanto riguarda l’indicizzazione. Quindi la cosa dello scroll infinito è qualcosa che Google capisce.

Non sono sicuro se abbia aiutato, ma ho deselezionato l’impostazione ajax nelle impostazioni di amministrazione. Ha fatto sì che Google trovasse URL come quello sottostante (e servisse la versione per crawler): l’ho deselezionata e ora quell’URL mostrerà la versione JS

https://discuss.flynumber.com/t/japan-phone-numbers-disconnect-notice/2351?_escaped_fragment_=

Ora tutto ciò che devo capire è come posso ripulire quegli URL canonici extra che discourse crea per le pagine utente.

Dopo almeno un mese circa di utilizzo della versione SPA (Full JS) di Discourse, sono tornato alla versione crawler.

Puoi fare riferimento alla cronologia dei miei post, ma sostenevo che Google potesse capire la versione JS e indicizzarla meglio della versione crawler. Mi sbagliavo.

Ehi @j127 avevi ragione! (ti manderò un messaggio privato, buon signore)

Sembra che Google abbia capito il sito, ma lo ha indicizzato più o meno allo stesso modo (se non leggermente peggio).

La versione crawler è stata anche aggiornata ad aprile/maggio per quanto riguarda i colori dei link, il formato, ecc., quindi è un bell’aiuto.

IMHO, se aggiungessimo un semplice menu e gli “argomenti suggeriti” alla versione crawler, farebbe una bella differenza per la SEO di tutti.

Per il resto, volevo solo condividere questa informazione nel caso qualcuno fosse curioso.

Ottimo lavoro ragazzi!

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.