JavaScript est maintenant utilisé de manière assez généralisée sur le web, mais c'est aussi un outil de tracking et parfois un risque de sécurité. Des chercheurs de Lille ont analysé quelle part du web est encore navigable sans utiliser ce langage.
Vous, lecteurs de Next INpact, utilisez peut-être le navigateur Lynx, qui ne prend pas en charge le code JavaScript des pages web, pour lire votre média en ligne préféré. Ou peut-être utilisez-vous l'extension NoScript sur Firefox, Chrome, Vivaldi ou Brave (ou d'autres comme uMatrix) ? Celle-ci permet notamment de désactiver le JavaScript sur votre navigateur.
JavaScript est très intéressant pour rendre une page web plus interactive, mais il permet aussi de tracer plus facilement un internaute et introduit des failles de sécurité. L'extension NoScript est d'ailleurs intégrée par défaut dans le navigateur Tor Browser pour éviter le pistage de ses utilisateurs et sécuriser leur navigation.
Mais, à bloquer JavaScript, on se coupe aussi de certaines fonctionnalités des pages web que l'on consulte jusqu'à les rendre, pour certaines, inutilisables. Des chercheurs de Lille (du CNRS et d'Inria) ont analysé ce qu'ils nomment des « ruptures » lorsque JavaScript est désactivé, pour identifier les fonctionnalités manquantes. Ils ont détaillé leurs travaux dans un article scientifique [PDF], publié dans la revue ACM Transactions on Internet Technology.
43 % des pages non dépendantes à JavaScript, 67 % des pages utilisables
Selon eux, dans plus de 40 % des pages étudiées, le fait de désactiver JavaScript n'a pas de conséquences problématiques pour consulter la page : « Même en tenant compte de l'ensemble de la page, 43 % des pages présentent encore toutes leurs principales caractéristiques, ce qui signifie que l'ensemble de la page fonctionne probablement comme prévu, même si JavaScript est bloqué », expliquent-ils dans leur article.
Et même, pour 2/3 des pages, les informations principales sont lisibles : « On constate que 67 % des pages présentent toutes les caractéristiques principales de la section principale, ce qui signifie qu'elles sont susceptibles d'être utiles à l'utilisateur, même si JavaScript est désactivé ».
Désactiver l'utilisation de JavaScript bloquerait, dans le même temps et selon leur étude, 85 % des requêtes de tracking.
Création d'un framework de détection
Pour étudier cette dépendance à JavaScript, les chercheurs ont créé un framework côté client qui permet de détecter qu'une fonctionnalité ne marche plus. Mais la création d'un tel outil n'est pas si simple. D'une part, même si le HTML sépare normalement les éléments interactifs des éléments non interactifs, en pratique, tout élément HTML peut être utilisé pour créer des éléments interactifs de la page. Et les chercheurs expliquent aussi qu'une page cassée pour une personne peut ne pas être vue comme telle par une autre.
Dans leur article, ils dénombrent plusieurs cas problématiques, par exemple les images qui peuvent être affichées en basse résolution sans JavaScript sur certains sites, l'impossibilité de soumettre un formulaire, le mauvais fonctionnement de boutons de formulaires, les problèmes d'ancres HTML, le remplacement d'adresses email par le texte « [email protected] » ou encore le fait qu'une page n'ait pas de texte du tout.
Ensuite, ils expliquent s'être tournés vers la définition technique du document en utilisant le Document Object Model (DOM) obtenu après le chargement initial de la page, qui décrit la composition d'une page web.
Évidemment, sans utiliser JavaScript, ils ne peuvent savoir si la page affiche les contenus que son auteur veut présenter. L'idée est de localiser les éléments de la page qui sont cassés ou incomplets. Cette approche a l'intérêt de permettre d'objectiver l'existence ou non d'un problème dans le document, sans se poser de question sur le rendu final. Cependant, il ne permet pas de s'attarder sur les symptômes possibles, c'est-à-dire sur ce que l'utilisateur voit vraiment en comparaison de ce qu'il s'attend à voir.
Test sur 6 384 pages de 3 774 domaines
Après avoir créé leur framework, les trois auteurs de l'étude ont composé une liste de pages à tester. Ils ont utilisé un sous-ensemble de la liste Hispar, créée par des chercheurs du MIT et du Max-Planck-Institut für Informatik. Celle-ci recense un nombre important de pages d'accueil et de pages internes de site web. Pour ce travail, le sous-ensemble contient 100 000 URL.
Puis, ils ont automatisé l'exploration de ces URL avec la bibliothèque Puppeteer en utilisant Firefox Nightly 88.0a1 (pour des raisons de compatibilité avec Puppeteer à l'époque), en désactivant JavaScript avec le paramètre javascript.enabled à « false ».
Différence avec la perception générale
Ces résultats peuvent paraître étonnants pour quelqu'un qui navigue régulièrement sur le web en bloquant le JavaScript. Les chercheurs tentent d'expliquer la différence entre cette perception et leurs résultats par le fait que « la plupart des sites web très visités dépendent fortement de JavaScript », citant notamment les services de Google, de Twitter ou d'Instagram.
Ils expliquent aussi que si React et Vue.js sont des frameworks JavaScript très connus des développeurs et que ces deux projets « figurent en effet parmi les 10 premiers dépôts sur GitHub sur la base du classement par étoiles », React et Vue ne sont, de fait, utilisés que « sur une très petite partie des sites web effectivement déployés ».