Suivez-nous

iOS

Comment fonctionnent les bloqueurs de contenus de Safari sous iOS 9 ?

bpepermans

Publié le

 
1blocker-ios9.jpg

Les bloqueurs de contenus n’ont pas fini de faire parler d’eux et au-delà de leur assimilation à de simples “effaceurs de pub”, nous vous proposons de voir comment ils fonctionnent et les risques que l’on prend à les activer.

Attention, toutes les applications vendues comme des bloqueurs de contenus ne se valent pas : elles ne bloquent pas les mêmes éléments, certaines intègrent des “listes blanches” par défaut, toutes ne permettent pas de personnaliser le filtrage, etc.

Que bloquent-ils ?

Les bloqueurs de contenus peuvent éliminer tout ce qu’une page web peut afficher ou charger : images, scripts, cookies, polices, éléments HTML, etc. Difficile de faire une liste exhaustive car les possibilités offertes par Apple sont illimitées et dépendent totalement de ce que le développeur se décide à proposer comme fonctionnalités.

Dans la catégorie “scripts” on rangera les publicités, les outils de suivi comportemental, certains systèmes de commentaires, des widgets de partage et autres outils dynamiques parfois gourmands au chargement de la page.

Comment fonctionnent-ils ?

Techniquement les bloqueurs de contenus reposent sur un fichier de type “JSON- qui liste les données sous forme de paires “clé / valeur” que l’on peut imbriquer.

Le fichier JSON que le développeur doit fournir contient des binômes “action / déclencheur (trigger en anglais)”.

Les trois actions principales sont “block” (bloquer le chargement de l’élément), “block-coo­kies” (bloquer la création d’un cookie) et “css-display-none” (masquer un élément chargé, une image par exemple).
Le déclencheur est une forme de filtre qui appliquera l’action sur trois principaux critères : l’URL de la ressource, son type (script, image, etc) et sa “relation” avec le contenu (locale ou tierce-partie).

En combinant les différents déclencheurs et les actions à réaliser dans ce cas, le contenu sera, au choix, simplement masqué ou bloqué en fonction de son type et de sa provenance. Les possibilités offertes sont quasi-illimitées, la question du choix proposé à l’utilisateur restant de la responsabilité du développeur et, sur ce point, les applications disponibles sont loin d’être égales.

Par exemple, 1Blocker est de très loin le plus personnalisable car il liste toutes les règles qu’il intègre et vous permet de les activer ou non et même d’en créer d’autres. Organisés par catégories, les filtres proposés se comptent par milliers (2922 règles liées à la publicité, 3993 pour les scripts de suivi !) mais ne garantissent pas un nettoyage complet.

Il est connu que ce dernier laisse, par défaut, passer les publicités de la régie américaine “The Deck”. Il faut la blacklister en créant une nouvelle règle. La prochaine version de l’application permettra d’alimenter une liste blanche de sites pour lesquels les filtres ne devront pas s’appliquer. En attendant, 1Blocker arrête tout ce qui répond aux filtres activés, quel que soit le site.

Pour les autres outils, la transparence est encore moins de mise avec, des listes blanches embarquées et non-modifiables ou une personnalisation plus que limitée.

Il en faut pout tous les goûts !

Accélèrent-ils vraiment le chargement des pages ?

Il se dit depuis les premiers pas d’iOS 9 que les bloqueurs de contenus sauvent votre forfait de données et accélèrent le chargement des pages web : légende urbaine ou réalité ?

La réponse est simple : Webkit, le moteur de Safari, consulte la liste d’éléments à bloquer avant de charger la page et ses éléments comme fait un videur à l’entrée d’une boîte de nuit. Ceux qui ne sont pas sur la liste sont laissés de côté et ne sont pas chargés lors de la requête.

En agissant ainsi, le système de blocage de contenu de Safari offre effectivement un gain sensible en matière de bande passante et de vitesse de chargement. Cependant des différences sont visibles entre les outils, principalement liées à la façon dont sont appliquées les règles à l’entrée. Pour le videur de boîte de nuit, plus la liste est longue et les critères précis, plus le temps de vérification de la liste nécessitera d’attendre longtemps à l’entrée avant d’autoriser ou non de participer à la fête.

Le gain de vitesse se fera soit au contrôle de la liste (temps d’attente) soit aux données effectivement autorisées à passer (volume de passage).

Nous avons réalisé quelques tests avec l’application 1Blocker (gratuite) configurée pour bloquer les publicités et scripts de suivi (option payante à 2,99€).

Les résultats parlent d’eux-même. Le temps de chargement est divisé par 4 en moyenne sur les sites testés !

Fonctionnent-ils dans les applications ?

Avec iOS 9, Apple a revu ses API permettant aux développeurs d’afficher une page web dans leur application et a créé l’API “SFSafariViewController” pour leur éviter de créer des “mini-navigateurs”. Avec cette API modelée sur les bases de Safari, les développeurs disposent de toutes les nouveautés et proposent une expérience de “navigation intégrée” unifiée, proche du navigateur par défaut du système.

En utilisant ce nouvel outil, les développeurs éviteront à un utilisateur connecté à un site dans Safari de devoir se reconnecter au même site quand il navigue dans son application. De plus, “SFSafariViewController” donne accès au remplissage automatique via le trousseau iCloud au mode lecteur de Safari, au panneau d’action et d’extensions de partage et… fait appel aux bloqueurs de contenu activés !

Le passage par SFSafariViewController plutôt que par l’API WKWebView inaugurée avec iOS 8 n’est aucunement obligé et laisse une porte ouverte pour éviter le blocage de contenus web affichés au sein d’une app…

Donc pour l’heure, la plupart des applications de l’App Store intégrant une vue web ne “bénéficient” pas (ou échappent ?) des bloqueurs de contenus.

Quels sont les risques à les activer ?

Comment parler de “risques” à activer un bloqueur de contenus quand les avantages listés ci-dessus et mis en avant dans leur description sont évidents ?

Nous ne jouerons pas les veuves éplorées en vous suppliant de ne pas bloquer les contenus sur notre site en mettant en avant le risque d’affecter nos revenus, mais le fait est que les bloqueurs de contenus peuvent avoir des conséquences désagréables sur votre navigation.

En effet, avec le mode “tout ou rien” de certains pourfendeurs de la publicité, les scripts coincés avant le chargement de la page peuvent désactiver certaines fonctionnalités et sérieusement entacher l’expérience de navigation !
Par exemple sur 01net, avec un bloqueur activé et ne ciblant pourtant que les publicités et les scripts de suivi, ce ne sont pas seulement les affichages commerciaux qui sautent mais également la feuille de styles !

Sur des sites e-commerce qui font appel à certains outils de Google Analytics ou Google Omniture, c’est tout le processus d’achat qui pourrait être ruiné par le bloqueur de contenus. D’autant que sur ce type de sites, la publicité affichée est rarement pour le voisin mais pour vous et ce que vous êtes venu chercher !

Il est bien entendu possible de désactiver les bloqueurs de contenus en laissant le doigt sur le bouton d’actualisation et en tapant sur “Recharger sans les bloqueurs de contenus” mais cela annihile tout le gain de temps espéré ! Charger le site une fois, le voir inutilisable, recharger le site AVEC les publicités… Pas des plus pratiques !

Pour une navigation “tout confort”, il faudra donc faire le choix entre bloquer sans ménagement (non sans risques), passer un peu de temps à configurer les outils qui le permettent ou alimenter une liste blanche.

Pour ceux qui veulent s’amuser avec le code, Krish Kumar a mis à disposition le code de BlockParty et AdBlockFast à fait de même : vous pouvez modifier à loisir l’application puis la compiler avec Xcode.

Si vous désirez en savoir plus sur le thème, voici la liste des sources utilisées pour la rédaction de cet article : webkit.org, hackingwithswift.com, macstories.net, brooksreview.net et developer.apple.com.