Désactiver ou contourner la détection de fonctionnalités pour Googlebot (tout en servant l'application JS aux robots d'exploration)

J’essaie de faire en sorte que Discourse serve entièrement l’application JS à Googlebot - je suis très proche.

Avec la courtoisie de @pfaffman et en exécutant le code ci-dessous (dans la console Rails), j’ai pu faire apparaître l’application JS lors de l’utilisation de Chrome et de l’usurpation de l’agent utilisateur pour Googlebot ou 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'

Cependant, lorsque je teste avec l’outil Google Mobile Friendly (ou l’inspection d’URL dans la console de recherche Google), il me donne une capture d’écran vierge avec le HTML ci-dessous.

Bing est similaire, mais avec eux, il affiche le contenu. Je pense que Bing affiche le contenu car son crawler n’est pas « mobile ». Post pertinent ici par @sam.

Selon @david et ce post, il semblerait que la « détection de fonctionnalités » soit le coupable.

Je suis prudemment optimiste quant à une solution simple. Toutes les 10-20 tentatives lors de l’utilisation de l’outil, Googlebot rend l’application correctement.

Ma théorie est que, puisque Googlebot est connu pour ne pas télécharger toutes les ressources lors de l’accès à une page, ce JS spécifique (qui contient la détection de fonctionnalités et provoque le retour en arrière) n’est pas chargé et donc la page s’affiche correctement.

En conclusion, comment désactiver la détection de fonctionnalités pour Googlebot (ou, si c’est plus facile, pour tous les crawlers/bots) ?

Modification Au cas où je me tromperais sur la terminologie, lorsque « détection de fonctionnalités » est mentionné sur meta, fait-il référence à la détection de navigateur ? (peut-être avec des fichiers comme browser-detect.js et d’autres dépendances)

Ou bien « détection de fonctionnalités » est-il une expression générale pour ce que Discourse fait lorsqu’il essaie de comprendre la technologie qui tente d’accéder à l’application ?

Y a-t-il une raison pour laquelle vous souhaitez servir la version JS à Googlebot ? Google ne pourra probablement pas trouver les vues de liste paginées, y compris la page d’accueil paginée et les sujets qui ont plus qu’un certain nombre de messages. Dans la vue du bot, les listes de sujets sont explorables, mais Googlebot ne déclenchera probablement pas le défilement infini.

Heureux que vous posiez la question, oui, je pense que c’est la raison de ma « soft penalty » Google

Permettez-moi d’élaborer.

Nous avons eu une mise à jour de site très bâclée vers septembre/octobre 2019, le site principal a chuté à ce moment-là.

Nous ne nous en sommes jamais remis. Le site n’a jamais été aussi bon en termes de SEO. Bien sûr, ce n’est pas parfait, mais nous avons des années d’avance sur certains concurrents. Des sites qui utilisent nos images et textes vieux de plusieurs années nous surpassent par pages. Nous sommes en 3ème position et eux peut-être en haut de la 2ème page.

J’ai parcouru d’innombrables blogs, vidéos, posts SEO et j’ai même eu quelques échanges avec John Mueller (sur Reddit).

Le maximum que j’ai obtenu de sa part était, cela pourrait être des « problèmes de qualité ». Nous avons considérablement amélioré le site principal depuis le 1er janvier de cette année. Même pas un petit coup dans le trafic organique.

Discourse : Je l’ai installé en 2013 et je l’ai oublié. Je vérifiais à peine son trafic.

Si vous regardez les analyses du site principal, vous verrez une forte baisse vers la fin du graphique. C’est à ce moment-là que j’ai commencé à travailler sur Discourse.

Lorsque j’ai essayé prerender.io sur discourse, le classement du site principal était erratique. Parfois, il sautait de 10 à 15 places du jour au lendemain, puis revenait. (J’ai depuis arrêté prerender car ils ne pouvaient pas rendre le menu principal, la connexion, etc.)

D’après ce que j’ai lu en ligne, c’est un signe que Google ne sait pas où vous placer. Ils disent qu’il suffit d’un petit « plus » et vous êtes du bon côté de l’algorithme.

Rien de ce que nous avons fait au cours des 3 dernières années n’a déclenché ces fluctuations dans les SERP.

(Manipulation de l’outil de désaveu de Google, nettoyage du code, URL propres, structure du site, liens internes, réseaux sociaux, contenu, etc.)

Vous pourriez argumenter, pourquoi Google ne m’a-t-il pas pénalisé en 2018 ? (vous aviez également discourse sur le sous-domaine à l’époque)

Eh bien, je pense que c’était une multitude de facteurs uniques au site, à son histoire, à son profil de liens. qui ont causé son effondrement fin 2019. Il semble que Google ait remanié le classement du site et ait peut-être donné plus de poids aux URL de discourse qu’auparavant.

Et le fait est… J’adore Discourse. Surtout maintenant que je suis plus sur meta, tous ces plugins et fonctionnalités cool dont j’ignorais l’existence. Wiki, paiements par abonnement, table des matières, et maintenant le chat !!

Donc, quitter discourse n’est pas vraiment une option, trop investi à ce stade.

J’ai pris cela en considération et je suis prêt à tenter ma chance. Je sais que ce ne sera pas parfait, mais d’après ce que j’ai lu et vu, Google est devenu très bon pour comprendre le JS ces derniers temps.

Ils ont même déprécié le schéma d’exploration AJAX

Les temps ont changé. Aujourd’hui, tant que vous ne bloquez pas Googlebot de l’exploration de vos fichiers JavaScript ou CSS, nous sommes généralement en mesure de rendre et de comprendre vos pages Web comme les navigateurs modernes.

Note annexe : Discourse a un paramètre pour l’exploration AJAX - je suppose que cela doit finir par disparaître.


Donc, le plan est de servir l’application à Google, faire de mon mieux pour résoudre les problèmes de SEO qui pourraient survenir et profiter de l’augmentation du trafic.

Je pourrai alors rapporter les résultats sur meta et soutenir que Discourse devrait envisager d’optimiser le JS pour Google.

Par exemple, quelque chose comme ceci (du blog Google) pourrait aider avec les problèmes de pagination et de défilement.

Et conserver la version non-crawler pour les anciens navigateurs.

Si je peux ajouter… :smirk:

Avant même d’envoyer la version JS à Google, j’y travaillais.

J’ai testé l’envoi de la version JS à Google début avril environ. Je me souviens qu’elle renvoyait un résultat la plupart du temps (même s’il semblait cassé). En utilisant l’outil mobile de Google.

Je pensais que cela pourrait être ce commit - j’ai apporté les modifications au code, redémarré et le comportement était le même.

Peut-être que quelqu’un se souvient d’une PR ou d’un commit au cours des deux derniers mois qui aurait pu modifier la détection des navigateurs et/ou des robots d’exploration ?

Edit Désolé pour toutes les mises à jour, plus il y a d’informations, mieux c’est, n’est-ce pas ?

En essayant prerender le mois dernier, Google a fini par ajouter 2000 URL à la couverture du forum. ( principalement ces URL )

Elles ont toutes été servies en 0,005 seconde, prerender avait les URL mises en cache et prêtes à être accessibles par le googlebot. Donc, il les a toutes prises rapidement.

Le fait est que le robot d’exploration s’est peut-être “très habitué” au sans JS et a engagé des ressources pour obtenir ces 2 000 pages.

Donc, maintenant, il accède au site de cette manière jusqu’à ce qu’il comprenne les choses (et qu’il ait besoin d’accéder avec JS davantage), ce n’est qu’une théorie.

Travailliez-vous sur quelque chose qui a changé la façon dont Discourse est exploré, comme essayer d’utiliser prerender dessus alors ?

Si vous vérifiez votre rapport de pages de destination dans GA, donne-t-il des indices sur la partie du site qui a été affectée ?


Pour le site principal, si John Muller a suggéré qu’il y avait des problèmes de qualité, je parcourrais leurs documents sur la qualité et je me demanderais si l’un d’eux s’applique.

D’après un rapide coup d’œil, vous avez des chaînes de redirection du site de 2019 qui pourraient être plus longues que ce que Google peut explorer.

Un candidat à une pénalité soudaine est que les URL du site de 2019 ont 6 redirections, mais Google dit de les garder “à moins de 5” ou elles pourraient ne pas suivre les redirections. Cela aurait pu donner l’impression à Google que les anciennes pages ont disparu du Web.

Exemple :

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

Les redirections sont probablement les plus faciles à corriger. Au lieu de les faire comme ceci :

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

Je le ferais comme ceci :

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

(Il semble que vous ayez également des pages d’accueil et de la synonymisation automatique, mais j’essaierais de résoudre le problème le plus simple en premier, car cela pourrait suffire.)

Merci, Josh, j’apprécie vos commentaires ici.

Bonne remarque et bien que mal exécuté, cela a pris de nombreux mois, - Google semble avoir compris la signification des pages.

En d’autres termes, j’ai finalement commencé à voir de plus en plus de pages vers lesquelles j’avais effectué des 301 pour les mots-clés utilisés sur les anciennes pages.

Cela a beaucoup de sens et je vais voir comment je peux le mettre en œuvre - actuellement, la console de recherche ne montre pas souvent le robot d’exploration effectuant des 301. Il semble que lorsque le classement s’améliore, ils suivent davantage les 301. Causalité sans corrélation peut-être.


Ce n’est absolument pas une critique de Discourse - je ne suis tout simplement pas facilement convaincu par “des milliers d’utilisateurs de Discourse ont un excellent trafic organique”.

Google ne va pas vraiment nous le dire non plus.

Nous devons toujours nous rappeler que Google est un algorithme, il ne regarde pas les choses du point de vue humain.

Bien que les deux versions partagent un contenu similaire, et que Google sache que ce n’est pas du cloaking malveillant - ils doivent toujours ajuster le classement.

Une version est bien meilleure, fonctionne mieux et donne un certain sens à la structure des liens internes. L’autre est un fil RSS glorifié.

Google n’a aucune idée que j’ai ce forum élégant qui fonctionne sur tous les appareils [modernes], encourage vraiment le débat et est l’une des choses les plus cool qu’Internet ait jamais créées.

J’aime toujours utiliser le lien “Propulsé par Discourse” do-follow dans la version pour robot d’exploration. (juste parce que c’est facile)

Encore une fois, je sais que ce n’est pas malveillant, mais vous devez le regarder à travers les yeux de Google. Vous, FlyNumber (pas https://community.cloudflare.com/), nous donnez cette version pour robot d’exploration avec un lien externe que vous ne montrez pas aux navigateurs normaux.

Je pouvais tout à fait imaginer que l’algorithme comprenne ce qui se passe et ignore le lien externe pour le domaine cloudflare (car c’est une telle autorité)

Ce n’est pas comme si ce que Google applique à cloudflare s’appliquerait à moi.

Quelqu’un vous a-t-il payé pour ce lien externe que vous montrez aux bots (mais que vous ne voulez pas montrer aux utilisateurs réguliers ?) Il s’agit davantage de la façon dont ils pourraient examiner le site. Je ne dis pas que c’est le cas, mais c’est une possibilité que vous voudrez éliminer.

En termes simples, la version pour robot d’exploration n’a pas de menu ni de structure réelle.

C’est le contenu que l’algorithme pense que vous voulez servir aux utilisateurs finaux.

D’un point de vue très général, je ne vois pas l’algorithme récompenser cela.

Il est peut-être temps que nous commencions à envisager une refonte complète de la version pour robot d’exploration. Au moins, ajoutez le menu principal et les sujets suggérés en bas.

Mise à jour intéressante Google a ajouté le “JSON” aux “types de fichiers” dans les statistiques d’exploration pour mon instance Discourse. Le “Javascript” est un “type de fichier” distinct.

Je suivrai de près, mais j’aimerais toujours que cela s’affiche correctement dans l’outil Google.

Je commence à penser que ma logique était erronée dès le départ. Cela expliquerait pourquoi personne n’a répondu - peut-être que rien ne va mal.

Voici un nouvel article expliquant qu’il est normal que Google affiche une page blanche dans la capture d’écran

Je peux maintenant voir le HTML « crawl » de la page d’accueil, c’est la version indexée, pas celle du « test en direct » - elle affiche la page complète. Gardez à l’esprit que Google a compris cela tout en leur servant l’application JS complète.

Ce qui est intéressant, c’est qu’ils sont descendus jusqu’à environ le 27e message sur la page d’accueil en termes d’indexation. Le défilement infini est donc quelque chose que Google comprend.

Je ne sais pas si cela a aidé, mais j’ai décoché le paramètre ajax dans les paramètres d’administration. Cela a amené Google à trouver des URL comme celle ci-dessous (et à servir la version pour crawler) - je l’ai décoché, et maintenant cette URL affichera la version JS

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

Maintenant, tout ce qu’il me reste à faire est de trouver comment nettoyer ces URL canoniques supplémentaires que discourse crée pour les pages utilisateur.

Après au moins un mois environ à servir la version SPA (version JS complète) de discourse, je suis revenu à la version crawler.

Vous pouvez vous référer à mon historique de publications, mais j’argumentais que Google pourrait comprendre la version JS et la classer mieux que la version crawler. J’avais tort.

Salut @j127, tu avais raison ! (Je vais t’envoyer un message privé, mon cher monsieur)

Il semble que Google ait compris le site, mais il l’a classé à peu près de la même manière (sinon légèrement moins bien).

La version crawler a également été mise à jour en avril/mai en ce qui concerne les couleurs des liens, le format, etc., ce qui est une bonne aide.

À mon humble avis, si nous ajoutions un menu simple et les « sujets suggérés » à la version crawler, cela ferait une belle différence pour le référencement de chacun.

Sinon, je voulais juste partager cela au cas où quelqu’un serait curieux.

Excellent travail les gars !

2 « J'aime »

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