Du code javascript sur une capture d’écran.

Du code javascript sur une capture d’écran.
De plus en plus de sites sont en AJAX même pour les pages les plus simples. Comprendre : la page envoyée par le serveur au navigateur est vide, et ne contient qu’un script. C’est le script qui va récupérer — dans un second temps — les données de l’article : titre, contenu, date… Ceci ne va pas s’arranger dans l’avenir car c’est comme ça que sont faites les applicables web (PWA).

Sauf que cela pose un problème technique dans certains cas. Pour ma part, dans le cas où je partage un lien sur mon site. Je le fais par un raccourci dans la barre d’adresse. Mon serveur récupère alors la page dont l’URL se trouve dans la barre d’adresse… sauf qu’il n’interprète pas les scripts, lui.
Du coup, il détecte un titre absent, ou vide et ne me préremplit pas le champ du titre. Je suis obligé de le faire moi-même à la main.

C’est le cas par exemple de Twitter. Cherchez dans le code source(Ctrl+U) sur une page d’un tweet seul la balise « title » : elle est vide ou absente. Pourtant la page affiche un titre : c’est qu’il a été ajouté dynamiquement par un script.

Comment contourner ça ?

Ben dites à votre serveur de s’identifier comme Google Bot.

Les sites et blogs veulent que Google détecte leur site y compris le titre. Donc s’ils voient un « Google Bot », ils lui envoient une page simplifiée, sans script à la con.

Si vous utilisez Wget ou cURL, ajoutez une option pour spécifier l’user-agent utilisé et mettez ça :

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)


C’est ce que je fais désormais dans mon lecteur RSS et donc mon outil pour partager des liens et parser les pages HTML. Pour le moment ça n’a jamais aussi bien marché.

En plus de ça, certains sites tronquent leurs articles pour vous forcer à vous abonner pour lire la suite (paywall). Par contre, ces mêmes sites distribuent l’intégralité de l’article au Google Bot.

Donc si vous vous dites à votre navigateur de s’identifier comme Google Bot, vous pouvez avoir accès à l’article entier. Sur une page simplifiée, plus légère, sans pub, ni scripts.


Outre l’astuce d’accéder à un contenu, c’est quand-même absolument grandiose d’en être arrivé là.

D’un côté une partie des sites mettent des captchas partout pour savoir si vous êtes bien un humain et avoir accès aux fonctionnalités, de l’autre, les pages qu’ils servent aux robots indexeurs sont 100 fois mieux que celles servies aux humains.

Ça montre une chose : ces sites-là n’en ont rien à foutre de leurs visiteurs. Ils vendent de l’espace publicitaire, et attirent les visiteurs dont ils pourrissent la navigation tant qu’ils n’ont pas payé (en euros, en données personnelles, avec leur âme ou en sacrifiant un chaton) avec un titre putaclic qui devra remonter convenablement dans les moteurs de recherche. C’est ça leur business. En attendant, ce sont bien les internautes qui sont emmerdés, ou dans mon cas, les codeurs qui veulent récupérer le titre d’un tweet dans un script.



Mise à jour : J’avais déjà écrit tout ce qui se trouve ci-dessus quand Seb poste ça : https://sebsauvage.net/links/?Dj7B4Q
C’est un cas pratique de ce qui est exposé ci-dessus : certaines [toutes petites] entreprises (restau, typiquement) passent exclusivement par FB pour publier leurs tarifs, prestations, horaires ou coordonnées. Google peut accéder à tout ça (d’où les horaires affichés directement dans les résultats de recherche), mais pas l’internaute qui doit s’inscrire et vendre son âme pour les voir et voir le reste des informations.


image d’en-tête de Luca Bravo

21 commentaires

gravatar
pourquoi a dit :

Super astuce, merci beaucoup !

Quel lecteur RSS et Atom tu recommandes ?
Pour ma part, j’utilise WebSite-Watcher, qui en général est très efficace, mais de temps en temps il y a un téléchargement qui ne fonctionne pas bien.

gravatar
Carmelo a dit :

Malheureusement ça ne fonctionne plus avec Le Monde par exemple :(

gravatar
Breizh a dit :

Au taf on a un script qui bloque tout ce qui s’identifie comme Google Bot sans être une IP Google… parce que c’est aussi la méthode habituelle des attaquants pour contourner certaines protection.

gravatar
bojolpif a dit :

Idem, testé sur plusieurs paywall, ne fonctionne pas.

gravatar
Le Hollandais Volant a dit :

@pourquoi : j’en recommande aucun, j’ai fait le miens car y en avait aucun qui me plaisait.

Si le téléchargement ne marche pas, ça provient parfois du site, pas du lecteur. En fait, 99 % du temps ça vient du flux RSS qui est mal foutu, à cause d’un problème d’encodage de caractère par exemple, ou un serveur down, ou même quand le site est totalement arrêté.

@Breizh : en effet, c’est ce que recommande Google lui-même : https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers?hl=fr

@Carmelo : et si tu t’identifie comme Yahoo, Bing, Qwant ou un autre moteur ?
Il doit bien y avoir un moyen.
Je m’en suis rarement servi, mais fut un temps ça marchait bien. Pour l’instant c’est surtout pour parser une vraie page HTML que j’utilise cette astuce.

gravatar
Jhonny a dit :
D’un côté une partie des sites mettent des captchas partout pour savoir si vous êtes bien un humain et avoir accès aux fonctionnalités, de l’autre, les pages qu’ils servent aux robots indexeurs sont 100 fois mieux que celles servies aux humains.

La singularité approche !

gravatar
droper a dit :

L'astuce de ce faire passé pour googlebot avais un autre avantage avant, c'est que ça forcais un certain nombre de service à rendre leurs page coté serveur et non de servir une single page application et son javascript immonde. C'était le bon vieux temps..

gravatar
Carmelo a dit :

@Le Hollandais Volant :

J'ai essayé mais rien de probant pour le monde.
Pour les autres les extensions type "bypass paywall" pour Firefox font le taf sinon

gravatar
Galex a dit :

NOOON :D ça marche vraiment ? :')

En plus en voyant le lien de seb, j’ai pensé la même chose, mais je me suis dit « noooooon… quand même pas… ils passeraient pas par l’user-agent… ils doivent vérifier avec le dns… »… ah non, « faut pas prendre les gens pour des cons, mais quand même se rappeler qu’ils le sont », toussa…

Moi j’aurais jamais osé faire confiance à l’agent utilisateur « ne jamais faire confiance aux données envoyées par l’utilisateur », toussa… alors qu’en revanche, une IP client avec un rdns de google (moi le dernier google bot qui est venu chez moi avait l’IP 243.79.249.66 (dont le rdns pointe sur crawl-66-249-79-243.googlebot.com : bon c’est pas un sous-domaine de google, ça laisserait place au namesquatting, mais bon j’imagine qu’ils utilisent que ce domaine… AH NON ils utilisent bien également google.com : https://developers.google.com/search/docs/advanced/crawling/verifying-googlebot?hl=fr pourquoi faire simple quand on peut faire compliqué ? c’est clair que bot.google.com c’est… ’fin voilà.)…

Assez rigolo son user agent (d’ailleurs sur la page que tu références, ils précisent que « ça peut changer, un seul bot peut envoyer plusieurs user-agent différents (pas cons… pas cons…)) : "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.113 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" (on dirait le programme politique de macron avant son élection… ou d’un fascisme (confusionniste) quand il essaye de recruter… ça se contredit en permanence, tous les 2 mots)…

Apparemment les user-agent à rallonge, c’est pas fini… ils attendent sûrement de se faire servir : terminaux cons, serveurs centraux compliqués… à quand un serveur qui envoie une liste de prérequis (standards, normes, etc. utilisées) plutôt que l’inverse ?

@Gaëtan : il marche comme ce paywall bypass ? :o

gravatar
Gaëtan a dit :

@Galex : visiblement ça marche en bidouillant le css via du javascript d'une liste de site connue (en masquant le paywall).
D'ailleurs en postant mon message je me suis rendu compte qu'il était maintenant disponible sur le 'appstore' Firefox

gravatar
Galex a dit :

@Gaëtan : aaaaaaaah mais c’est nul :c ça je le fais déjà tout seul avec ublock (le « filtre esthétique » : clic droit et « masquer l’élément »)… bon j’imagine que c’est plus pratique que de le faire manuellement, surtout pour celleux qui connaissent pas… ça fait du partage… mais bon, vu la taille minimale d’une extension firefox de nos jours… je pense pas que ça vaille le coup…

gravatar
geekpay a dit :

Pour certains sites comme le Parisien il suffit de se mettre en mode lecture dans Firefox pour pouvoir lire le contenu en cliquant sur l’icône dans la barre d'adresse ou en utilisant le raccourci "Ctrl + Alt + r" .

gravatar
Vin100 a dit :

@Galex je n'arrive pas à voir comment tu fais avec ublock

gravatar
Galex a dit :

@Vin100 : clic droit -> bloquer un élément -> tu cliques dessus, *paf*

@geekpay: *.*

…OMG MAIS ÇA MARCHE

gravatar
Duncan Idaho a dit :

Sur libération, a un moment, désactiver le javascript marchait très bien, pour avoir accès à tout l'article :D

Je sais pas si c'est encore d'actualité, je me suis abonné, entre temps ^^

gravatar
Altome a dit :

J'ai eu affaire à ce genre de problème. J'ai pris le chemin inverse : webdriver un Chromium complet, avec un bloqueur de pubs, avec des cookies de sessions qui resservent une page quand je suis connecté et que j'ai passé un captcha à la main, avec support de JS intégral. Oui, c'est foutrement casse-couilles, et encore plus quand le code d'une page web à analyser est généré par un générateur de site (va te taper les classes avec des noms imbitables pour récupérer ce que tu veux), mais ça fonctionne. Étonnamment, je viens d'essayer, y'a un site que je veux crawler dont le CloudFlare bloque purement et simplement l'accès au Google Bot. Nice.

gravatar
Breizh a dit :

@Altome : En es-tu certains ? Je pense qu’il bloque le Google Bot si ça ne vient pas des IP de Google, plutôt. C’est classique et on est les premiers à le faire au taf, parce que c’est une méthode classique pour les attaquants que se faire passer pour Google Bot pour contourner les protections. Du coup si t’es pas le vrai on bloque direct, plus simple.

gravatar
bastien a dit :

Sinon, si il n'y a pas d'autres solutions, il existe une extension chrome "TabFS" qui monte le navigateur comme un périphérique (uniquement sous linux) et ça permet d'accéder au contenu des pages depuis des scripts (en plus c'est assez bien fait, ça génère une arborescence qui permet de trier les onglets par nom, date d'ouverture, taille, etc...)

gravatar
John Doe a dit :

Ouais c'est énervant ces gens qui veulent gagner leur vie avec le contenu qu'ils créent et diffusent.


Votre commentaire sera visible après validation par le webmaster.