4859 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • Flicage sur le web : aller plus loin avec uBlock Origin / uMatrix / NoScript

    Résumé : état des lieux du flicage sur le web et réflexion : jusqu'où aller pour limiter son flicage web ? Bloquer la pub et les traqueurs / pisteurs ? Facile avec uBlock Origin. Ne pas laisser son navigateur communiquer à des tiers la page web précise sur laquelle on se trouve (tel article de journal, tel profil sur un site web de rencontres, etc.) ? Facile avec Smart Referer (mais il y a des fuites malgré tout). Éviter le téléchargement automatique d'une partie des contenus tiers auprès des géants du web ? Facile avec LocalCDN (qui remplace la défectueuse Decentraleyes), mais le trou dans la raquette est énorme. Bloquer tous les scripts et les frames / inclusions externes sur un site web ? Faisable avec uBlock Origin (encore faut-il le savoir) ou uMatrix, mais c'est chiant et il faut s'impliquer lourdement (débloquer des contenus externes sur nos sites favoris). Bloquer tous les contenus tiers et autoriser les indispensables site web par site web ? Faisable avec uBlock Origin ou uMatrix, mais c'est totalement invivable, même quand on est motivé. La guerre technique étant asymétriquement en notre défaveur, je pense que le retrait des contenus tiers de nos sites web favoris passe par le dialogue. Contacter l'éditeur du site web. Dialoguer avec nos collègues développeurs web / administrateurs systèmes afin de les informer des conséquences de leur choix / travail de piètre qualité. Ça ne fera pas tout (genre sur les sites web internationaux), mais ça sera déjà ça.



    Ce shaarli s'adresse à un public avancé. J'entends par là des personnes qui ont l'envie et le temps de comprendre et qui acceptent le risque de rendre leur navigation web plus ou moins invivable (je préciserai à chaque étape et un retour en arrière facile est toujours possible).

    Si tu ne te reconnais pas, dans leur configuration par défaut, les extensions pour Mozilla Firefox uBlock Origin et Smart Referer fonctionnent très bien sans déranger l'utilisateur. Elles sont déjà une bonne base pour défendre ta vie privée. Tu peux y adjoindre Privacy Badger et LocalCDN. Le gain n'est pas flagrant, mais la probabilité d'emmerdements est très faible.



    Commençons par un rappel.

    Le contenu d'un site web se décompose en plein de morceaux (texte, images, mise en forme, police de caractères, etc.). Chaque morceau peut être stocké (et diffusé) indépendamment des autres.

    • Certains morceaux sont stockées au sein du domaine du site web. Exemple : sur ce site web, la mise en forme (style CSS) est stockée sur la machine dont le nom est « shaarli.guiguishow.info », le même domaine que celui de la page web consultée, donc. Autre exemple : les images du site web « example.com » peuvent être stockées sur « img.example.com », un sous-domaine. On nomme cette catégorie « contenus first-party » = 1st-party = contenus du domaine de la page = contenus du site = contenus internes ;

    • Certains morceaux sont stockés hors du domaine. Exemple : les images affichées sur Wikipedia sont stockées sur « upload.wikimedia.org », un domaine différent de celui de la page web. Le fait que les deux domaines (« fr.wikipedia.org » et « upload.wikimedia.org ») appartiennent tous deux à Wikimedia n'a pas d'importance d'un point de vue technique. On nomme cette catégorie « contenus third-party = 3rd-party = tierce partie = contenu tiers = contenus externes ;

    • Évidemment, les choses ne sont pas aussi simples et certains contenus tiers sont camouflés en contenus provenant du domaine de la page. Exemple : « medias.liberation.fr » se nomme en réalité « medias.liberation.fr.wtxcdn.com ». Ce n'est pas le même domaine que « liberation.fr », donc il s'agit de contenus tierce partie.



    La problématique à l'origine de ma réflexion est la suivante : je veux que des contenus provenant de « youtube.com » soient chargés automatiquement lorsque que je vais sur Youtube de ma propre initiative, mais qu'ils ne soient pas chargés quand je suis sur un autre site web, comme celui du journal Fakir ou celui de la mairie de mon bled ou mon espace personnel sur le site web de ma banque.

    L'objectif principal est de préserver ma vie privée : je ne veux pas que Google Youtube sache que j'ai consulté le site web de Fakir ou celui de ma mairie ou celui de ma banque. Or c'est possible avec le nom du contenu (une liste de lecture « Fakir TV », ça se voit) et/ou avec le Referer, entre autres. J'ai expliqué ce qu'est le Referer et les problèmes de vie privée que cela pose dans un article récent.

    L'objectif secondaire est d'arrêter de charger des contenus qui ne m'intéressent pas afin d'économiser des ressources et de gagner du temps. Tous les sites web modernes sont des merdes qui mettent plusieurs secondes à se charger pour un contenu réel environ nul (en proportion).



    Ublock Origin, uMatrix et NoScript sont quelques extensions Firefox qui permettent de filtrer la merde des sites web. La publicité, par exemple, mais aussi les traqueurs / pisteurs / profileurs (qui cherchent à collecter le plus d'informations possible), les outils de mesure d'audience, et plein d'autres éléments souvent invisibles.

    Voyons le fonctionnement principal de chaque outil dans sa configuration par défaut :

    • uBlock Origin : il filtre uniquement les contenus dont le nom / l'URL apparaît dans une liste de filtrage. Dit autrement : il autorise tout, sauf ce qui apparaît dans une liste de filtrage. Ce blocage a lieu, que les contenus soient ceux du site (1st-party) ou des contenus tiers (3rd-party) ;

    • uMatrix : il autorise tout ce qui provient du site sauf les frames / inclusions. Les seuls contenus tiers autorisés sont les images, les CSS et les polices de caractères (il n'autorise pas les frames / inclusions, les scripts, les médias, etc.). Dans les deux cas (contenus du site ou contenus tiers), le contenu est bloqué si son nom / URL apparaît dans une liste de filtrage ;

    • NoScript : les seuls contenus (tiers ou non) autorisés sont les images, les CSS, les médias, les frames / inclusions (il n'autorise pas les scripts, les polices de caractère, etc.). Néanmoins, le contenu est autorisé si son nom / URL apparaît dans la liste blanche (elle est plutôt conséquente) ;

    Chaque outil a des fonctionnalités secondaires qui lui sont propres. NoScript protège contre le vol de clic et les attaques XSS basiques. uMatrix peut masquer le Referer. uBlock et uMatrix bloquent certaines indiscrétions supplémentaires comme la fuite d'adresses IP locales en webRTC ou la surveillance des liens (attribut « ping » de la balise XHTML « a »).

    On va donc obtenir un résultat différent avec chaque extension. Si je reprends mon exemple de Youtube sur le site web du journal Fakir / mairie / banque : uBlock le laissera passer car il n'apparaît pas dans une liste de filtrage, uMatrix ne le laissera pas passer car il s'agit d'une inclusion, et NoScript le laissera passer car il s'agit d'une inclusion et que Youtube apparaît dans la liste blanche (comme la plupart de l'empire Google).

    Par défaut, si l'on bloque / débloque un contenu avec uBlock Origin ou NoScript, même temporairement, ça vaut pour tous les sites web (et tous les onglets). Avec uMatrix, par défaut, l'autorisation vaut pour le site en cours (j'autorise youtube.com sur le site web de Fakir et uniquement sur ce site web). Avec sa configuration par défaut, uMatrix répond mieux au fil rouge de cette réflexion.

    Sans surprise, un même type d'élements peut être bloqué par défaut par plusieurs de ces extensions, mais pas toujours. Exemple : les scripts sont bloqués par NoScript (sauf ceux de la liste blanche) et par uMatrix (sauf ceux du domaine de la page web consultée).

    Évidemment, il y a des équivalences.

    • Pour qu'uBlock Origin fonctionne comme uMatrix fonctionne par défaut, il faut bloquer globalement les frames / inclusions et les scripts. Cela se fait à la dure dans l'onglet « mon filtrage dynamique » des préférences d'uBlock Origin. On va plutôt le faire en mode simple. On va dans les préférences -> onglet « paramètres » -> on coche « activer les fonctionnalités avancées ». À partir de là, le menu qui apparaît quand on clique sur l'icône d'uBlock Origin dans la barre d'outils s'enrichit : la liste des domaines bloqués (qui apparaît quand on clique sur « Requêtes bloquées » ou « Domaines connectés ») contient désormais deux colonnes. Celle de gauche sert à bloquer / autoriser un contenu globalement (tout site web confondu). Celle de droite sert à autoriser / bloquer un contenu sur le site web actuel. Pour bloquer les frames / inclusions, il suffit donc de cliquer sur la couleur rouge dans l'intersection entre la ligne « Cadres de tierce-partie » et la colonne de gauche (couleur verte au même endroit pour débloquer globalement). Icône cadenas pour sauvegarder et icône gomme pour effacer tous les changements récents pour ce site. Utiliser la même méthode pour bloquer les « Scripts de tierce-partie » ;

    • Pour qu'uBlock Origin fonctionne comme NoScript fonctionne par défaut, il suffit de bloquer les « Scripts de tierce-partie » avec la méthode du point précédent. Attention : c'est une simplification ! NoScript protège contre le vol de clic, contre les XSS, etc. et bloque par défaut d'autres objets que des scripts, ce qu'uBlock ne fera pas ;

    • Évidemment, on peut faire en sorte qu'uMatrix fonctionne comme uBlock Origin fonctionne par défaut en autorisant les cadres / inclusions et les scripts, ou comme fonctionne NoScript par défaut en autorisant les inclusions ;

    • Évidemment, on peut faire en sorte que NoScript fonctionne environ comme uMatrix fonctionne par défaut en bloquant les cadres dans le préréglage « par défaut » dans l'onglet « Général » des préférences, ainsi qu'en cochant « Définir temporairement les sites de haut niveau comme FIABLES » dans le même onglet ;

    À ce stade, les inclusions et les scripts tiers sont bloqués par au moins l'une de ces extensions. uMatrix étant celle qui va le plus loin par défaut et uBlock Origin le moins loin (pour moi, c'est parfaitement normal, son travail réside ailleurs).

    À ce stade, la navigation web peut commencer à devenir pénible car il faut autoriser les scripts et les inclusions tiers sur nos sites web favoris. Mais une fois que c'est fait, normalement c'est OK, ça change peu. C'est donc un bon compromis vie privée / confort, je trouve.



    Et si l'on allait plus loin ?

    Sur tout site web moderne, le style CSS est récupéré depuis BootstrapCDN, la police de caractères depuis Google et les scripts JavaScript depuis CloudFlare (ce sont des exemples). Tout ça laisse des traces chez les quelques géants du web qui leur permettent de tracer un internaute entre les sites web qu'ils consultent (car ces acteurs sont utilisés partout) et à l'intérieur d'un site web (untel a lu tel et tel article).

    Peut-on bloquer tout ça ? Peut-on bloquer ces contenus tiers ?

    Depuis plus de quatre ans, j'utilisais l'extension Firefox Decentraleyes. Elle détecte l'utilisation de scripts bien connus et, plutôt que de les faire télécharger par le navigateur web, elle les injecte elle-même dans la page. Dit autrement : cette extension embarque les scripts bien connus et les remplace sur les sites web consultés. Ainsi, le fonctionnement du site web est identique, mais rien a été téléchargé depuis le site web du géant du web.

    Depuis plus d'un an, je constate qu'elle est inefficace. À part pour remplacer un jquery téléchargé chez Google, elle est incapable d'agir pour un script téléchargé depuis jsdelivr.net, MaxCDN, jquery.com (!!!), cdnjs.com et autres. J'ai pourtant la dernière version, la 2.0.14 qui est sortie il y a deux semaines.

    LocalCDN est une extension Firefox dérivée de Decentraleyes. D'après mes tests, tout ce que j'ai mentionné au point précédent est substitué par une version locale sauf jsdelivr.net. C'est déjà beaucoup mieux. C'est du logiciel libre. Je n'ai pas encore assez de recul afin de dire si ça ne fait pas fuiter des choses en douce et si ça casse rien.

    Je ne crois pas trop à ce type de solution pourtant très simple d'utilisation : seuls quelques rares contenus tiers sont pris en charge, donc il reste beaucoup de fuites, et, surtout, la version des scripts change tellement souvent que je suis certain que l'extension est inutile sur les sites web qui suivent les versions, son temps de mise à jour étant plus long que le délai moyen d'apparition d'une nouvelle version d'un script voire celle d'un nouveau script à la mode.



    On peut bloquer tous les contenus tiers d'un site web donné avec uBlock Origin. En appliquant la méthode ci-dessus (premier point de la liste « il y a des équivalences ») à l'intersection entre la ligne « Tierce-partie » et la colonne de gauche. Comme avant, il sera possible de débloquer des contenus domaine par domaine sur chaque site web en cliquant sur la couleur verte dans l'intersection entre un domaine et la colonne de droite. L'autorisation est descendante / récursive : autoriser un domaine autorise ses sous-domaines. C'est pratique avec les CDN, ça permet d'autoriser toutes les instances présentes et futures d'un seul coup. Mais, en cas de vol d'un nom ou d'une attaque, du contenu pourra être injecté sur le site web que tu consultes, d'où ne pas autoriser les scripts sur tout un domaine et ses sous-domaines peut être une bonne idée. Aucun problème pour CSS, médias, etc.

    Je vois deux limites :

    • uBlock Origin ne donne pas de visibilité sur le type du contenu qui est bloqué / débloqué : CSS ? images ? scripts ? ;

    • En conséquence, bloquer / débloquer un domaine bloque / débloque tous les types de contenu pour ce domaine et ses sous-domaines ;



    Ben, utilisons uMatrix, alors. Sa présentation matricielle nous permet de voir les types de contenus et les domaines et de bloquer / autoriser tel type de contenu (cliquer sur l'entête des colonnes), tel domaine (cliquer sur l'entête d'une ligne) ou tel type de contenu provenant de tel domaine (cliquer sur l'intersection) pour chaque site web.

    Je vois deux limites.

    La première est que, par défaut, uMatrix n'a pas les mêmes listes de filtrage qu'Ublock Origin, donc il laisse passer des traqueurs / pisteurs bloqués par uBlock. On peut obtenir le même comportement que celui d'uBlock en important toutes les listes de filtres dans les paramètres (onglet « Ressources ») ainsi qu'en bloquant les styles CSS (et les polices de caractères) et les images tierces. Pour ce faire, il faut cliquer sur l'icône d'uMatrix dans la barre d'outils, passer en vue globale en cliquant sur « * » (en haut, à gauche) puis cliquer sur l'entête de la colonne CSS et celui de la colonne images. Cadenas pour sauvegarder. « * » pour revenir à la vue locale. On pourra débloquer des contenus (images, CSS, police de caractères, médias, etc.) au cas par cas, site web par site web et domaine par domaine comme on l'a vu ci-dessus.

    La deuxième limite d'uMatrix est qu'il ne bloque pas encore les traqueurs / pisteurs déguisés. Qu'est-ce ? Au début de ce shaarli, j'ai écrit que certains contenus tiers sont camouflés comme contenu interne au site, comme « medias.liberation.fr » qui se nomme en réalité « medias.liberation.fr.wtxcdn.com ». (Évidemment, comme l'explique l'article pointé, cela diminue le niveau de sécurité face à un contenu injecté…) Il en va de même pour les traqueurs / pisteurs. Regardons le script dont le domaine est « f7ds.liberation.fr ». Son vrai nom est en réalité « atc.eulerian.net. ». Eulerian est une société commerciale qui exerce dans le marketing. Le script est un traqueur / pisteur. Le fait qu'une liste de filtrage bloque le domaine « eulerian.net » sera inefficace puisque cette ressource se nomme « f7ds.liberation.fr ». Depuis février 2020, uBlock Origin prend en compte le nom final, mais pas la version d'uMatrix publiée sur addons.mozilla.fr (la version beta disponible dans le dépôt git le fait). Donc, pour l'instant, si l'on utilise seulement uMatrix, on perd en qualité de blocage de la vraie merde (les traqueurs / pisteurs), ce qui est un mauvais choix, à mon avis : mieux vaut filtrer le plus offensif, donc les atteintes à la vie privée certifiées.

    Notons qu'on peut utiliser uBlock Origin pour le blocage et uMatrix pour la visibilité sur les contenus. Le meilleur des deux mondes. Pour cela, on peut désactiver toutes les listes de filtrage d'uMatrix. Comme ça, pas de doublon sur ce périmètre-là, donc gain de temps lors de l'analyse d'une page web. On peut également désactiver les autres protections d'uMatrix afin d'être sûr de tout centraliser dans uBlock, ce qui facilite le diagnostic d'un sur-blocage / comportement étrange. Ça sert à rien à moyen terme puisque uMatrix aura le même comportement qu'uBlock Origin.



    Alors utilisons uBlock Origin en bloquant tout contenu tiers et en acceptant de perdre en visibilité sur le type de contenu bloqué (script, CSS, etc.). Ce n'est pas si simple…

    Si le véritable nom qui héberge les images et/ou le CSS est en dehors du domaine (statics.liberation.fr = statics.liberation.fr.wtxcdn.com, par exemple), alors le contenu sera bloqué. Même chose si le HTML est en dehors du domaine (exemple : www.gouvernement.fr = sni.www.gouvernement.fr.c.footprint.net) : toute la mise en forme saute.

    Ça se passe comme ça sur pleeeeiiiin de sites web. La navigation web devient l'enfer sur terre. Vraiment. Même pour quelqu'un de motivé.

    Et ça ne va pas s'arranger. Regarde le nom suivant : www.francebleu.fr = a3d5db99c4f9f11e9bd370659f4f1e30-375828590.eu-west-3.elb.amazonaws.com. Cela identifie une instance chez Amazon AWS. T'es pas sûr de tomber sur la même instance lors de ta prochaine visite. En clair : il faudra peut-être débloquer à nouveau encore et encore France Bleu dans uBlock. C'est chiant et ça encombre la liste des règles d'uBlock Origin, ce qui va nécessairement le ralentir. Perdu.

    Tu noteras que ce problème surviendra aussi avec uMatrix dès lors que la version publiée sur addons.mozilla.org bloquera aussi le nom final plutôt que le nom de façade.

    Dit autrement : il va devenir très compliqué de bloquer les contenus tiers.

    Au moins, ça permet de se rendre compte qu'on a vraiment merdé, que le web est devenu n'importe quoi. Mais vraiment. Tu veux aller peinard sur le site web de ton gouvernement ? Tu atterris chez un opérateur de communication États-Unien (footprint.net = Level 3). Tu veux aller sur le site web de ta radio ? Tu atterris chez Amazon. Le site web de ton journal ? Vlam le traqueur déguisé. C'est sans compter sur tous les acteurs qui seront informés lorsque ton navigateur récupérera CSS, images, police de caractères, scripts, vidéo, carte géographique, etc. d'un banal site web. J'apprécie aussi beaucoup les styles CSS et les polices de caractères qui sont chargés depuis des hébergeurs externes sans être utilisés sur le site web… … …

    On pourrait demander à l'auteur d'uBlock Origin / uMatrix de ne pas considérer la page web comme du contenu tiers. Si l'utilisateur a désiré consulter tel site web, peu importe que la page web soit hébergée hors de son domaine. Afficher la page en bloquant tout le reste, c'est déjà informer le prestataire choisi par le site web (Amazon pour France Bleu et Level 3 pour le site du gouvernement). Même raisonnement pour les images et le CSS : si l'hébergeur / le nom final est le même que pour la page web, on peut laisser passer. J'imagine cependant que ce leste permettra des contournements malveillants.



    Bref, bloquer les contenus tiers sur les sites web est une stratégie invivable, même pour quelqu'un de motivé.

    C'est pour ça qu'il faut mettre la pression sur les éditeurs des sites web qu'on apprécie afin qu'ils internalisent les ressources (images, styles, polices de caractères) utilisées sur leur site web. C'est pour ça que j'ai écrit aux journaux que j'apprécie, par exemple. J'ai aucun doute : ça servira à rien, mais ça permet de prendre date, de dire « à partir de telle date, vous n'ignoriez plus la problématique, donc vous êtes responsable. Vous saviez et vous n'avez rien fait ».

    Il faut également former les développeurs web et les administrateurs systèmes. Les premiers afin qu'ils apprennent à utiliser le framework qu'ils utilisent et qui permet d'internaliser en un clic les ressources (comme les traqueurs dans les applications mobiles qui sont activés par défaut par incompétence). Les seconds afin qu'ils apprennent à faire de la montée en charge sans recourir à des prestataires qui deviennent de plus en plus hégémoniques.



    Ne vais-je pas trop loin ? Est-il vraiment utile de bloquer les contenus tiers des sites web ?

    Après tout :

    • uBlock Origin bloque les diffuseurs de publicité, les traqueurs / pisteurs, et les mesureurs d'audience. Uniquement ceux connus, certes ;

    • Smart Referer empêche la fuite du Referer auprès des quelques hébergeurs dominants de contenus tiers. Ils voient donc une date+heure, une adresse IP et un navigateur web (User-Agent), mais ils ne savent plus quel site consulte l'internaute. Mais, parfois, le nom de la ressource récupérée en dit long ;

    • Avec LocalCDN à la place de Decentraleyes (qui ne fonctionne plus), on évite la récupération d'une partie des contenus tiers, ceux les plus répandus. Ça n'apporte pas grand-chose de plus niveau vie privée (le géant du net ne sait plus qu'à telle heure, tel navigateur avec telle adresse IP fait des actions), mais c'est possible. Attention : je ne suis pas encore sûr que cette extension ne fasse pas fuiter volontairement (par malveillance) des choses ;

    • On peut configurer Firefox afin qu'il ne récupère pas les polices de caractères externalisées (cette récupération fait fuiter le nom du site web sur lequel on se trouve dans l'inévitable entête HTTP « Origin: ») ;

    • Si l'on utilise uMatrix ou que l'on configure uBlock Origin pour ce faire (voir ci-dessus), on bloque les scripts et cadres / inclusions tiers sans trop pénaliser sa navigation web. Là encore, des géants du web ne sauront plus qu'à telle heure, tel navigateur avec telle adresse IP fait des actions ;

    • NoScript apporte des garanties côté sécurité (protection contre les attaques XSS et vol de clic, entre autres), mais environ rien côté vie privée, en comparaison de la somme des points précédents.

    Alors, oui, il n'y a pas que le Referer qui informe les géants de nos lectures précises sur le web, d'autres entêtes HTTP le font (par exemple : « Origin: » pour Ajax / XMLHttpRequest, la récupération d'une police de caractère, et d'autres usages). Mais comme on bloque ces contenus (polices et scripts) avec Firefox et uMatrix / uBlock Origin aux 4e et 5e points, ça n'a pas d'importance.

    Le nom du contenu est parfois bien suffisant pour identifier le contexte (quand ton navigateur demande la liste de lecture « Fakir TV » à Youtube sans rien demander au préalable, c'est qu'il est sur le site web de Fakir.

    Les hébergeurs des contenus externes / tiers restants (CSS, JS, images) déposent rarement des cookies. Petite digression : on peut bloquer tous les cookies avec uMatrix et les autoriser au cas par cas pour chaque site web en utilisant la mécanique vue et revue tout au long de ce shaarli. Cela permet de remplacer l'extension Firefox Cookie Monster morte lors du changement de format des extensions et de pallier à l'absence de visibilité à laquelle nous confronte Firefox (comment sais-je que tel site web qui ne s'affiche plus a besoin de cookies ? pour quel domaine ?).

    Donc, au final, faut-il se rendre la navigation web invivable pour ces contenus tiers restants ? Je n'en suis pas convaincu. On peut s'arrêter aux mesures mentionnées dans la liste de 6 points ci-dessus si l'on est motivé ou juste installer les extensions Firefox uBlock Origin, Smart-Referer (et éventuellement LocalCDN) si l'on ne veut pas se prendre la tête.

    En revanche, ce dont je suis sûr, c'est qu'il faut agir à la racine du problème, c'est-à-dire du côté des sites web. Ne pas hésiter à contacter l'éditeur des sites web que t'apprécie pour lui demander de dégager un maximum de contenus tiers. Ce sont eux les responsables. Si ça peut inspirer, voici ce que j'ai écrit aux journaux que j'apprécie. De même, ne pas hésiter à sensibiliser les développeurs web dans nos taffs respectifs. : internaliser style CSS, scripts JavaScript, polices de caractères, etc., c'est ni compliqué ni chronophage. Si un échange humain ne prend pas et que tu es administrateur système, tu peux aussi déployer l'entête HTTP Referrer-Policy. Bien que ça laisse un trou conséquent dans la raquette, ça sera déjà ça de pris à moindre effort.

    Sat 18 Apr 2020 08:47:57 PM CEST - permalink -
    - http://shaarli.guiguishow.info/?HLalig
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community - Help/documentation