Je ne vais pas vous refaire le pitch de comment ça marche, des limitations techniques qui existent encore (pas de détection des DNS menteurs pour le moment) et vais me contenter d’un petit article parce que, franchement, depuis une semaine que je code h24 j’en peux plus !
Aux dernières nouvelles je cherchais un serveur dans un pays considérant l’accès à internet comme un droit fondamental (Islande, Finlande ou Estonie donc) et j’ai discuté avec quelques membres du parti pirate Finlandais puis Suédois (le premier PP) qui m’ont conseillé de m’établir en France pour, qu’en cas de complications, je n’ai à faire qu’au droit français… Conseil que j’ai suivi en prenant un serveur cloud chez Gandi dont je suis pour le moment très satisfait et qui peut être modulé au besoin en fonction de l’activité générée.
Dans le cas où ça se gâterai j’ai aussi récupéré des contacts chez des hébergeurs connus pour ne pas céder à la pression de grands groupes voulant faire fermer tel ou tel site (genre l’hébergeur de TPB ^^).
Reste maintenant à mettre en place un certain nombre de fonctionnalités qui rendront le truc agréable à utiliser, plus sûr et surtout invulnérable à la censure…
Et surtout : il reste à le remplir ! Et pour cela je compte sur vous pour installer l’addon, en parler autour de vous et aider ce projet à atteindre ses objectifs : dresser une carte temps réel de la censure à travers le monde !
(en passant : pour passer l’extension firefox en mode public « recommandé » il faut que ladite extension a recueilli assez de feedbacks sur sa page, aussi n’hésitez pas à commenter sur la page de l’addon)
]]>Comme toujours (ou presque) en informatique, je ne suis pas à l’heure (la livraison était prévue pour hier) mais le site est presque prêt : tout fonctionne côté frontoffice et il me reste une partie du backoffice, qui peut donc attendre, et du contenu à rédiger. L’extension pour sa part est finie et prête à être empaquetée et uploadée.
Je suis à présent à la recherche d’un serveur dédié pour héberger le projet avec une contrainte assez exotique : je veux que le projet soit hébergé dans un pays où l’accès à Internet est considéré comme un droit fondamental (Islande ou Finlande donc).
J’espère avoir trouvé le serveur assez vite et pouvoir tout mettre en ligne dans la foulée. D’ici quelques jours (48h maximum je pense) CensorCheap va passer du statut de projet à celui d’outil. Il faudra alors réfléchir à de nouvelles problématiques telles que comment supporter la charge, comment éviter la censure de l’outil en lui même, … Et surement énormément de choses que je n’ai pas encore prévu mais que j’ai hâte d’avoir à résoudre.
Dans l’état actuel du projet, le site est capable de produire des listes d’url et de sites bloqués pour tous les pays du monde. La formule permettant de calculer les faux positifs est évolutive et ajustable simplement depuis l’administration. Pour le moment c’est la suivante (avec les paramètres évolutifs en gras) :
nombre de signalements > 10 && nombre de signalements>nombre de fake*2
Il est en effet possible de signaler un fake dans les listings du site et lesdits listings se mettent à jour automatiquement en fonction de cela.
Pour des raisons de sécurité je dois pouvoir identifier un utilisateur comme ayant déjà signalé une url ou non (pour éviter que l’utilisateur ne signale 12 fois la même url tout simplement) aussi j’ai décidé d’utiliser un hash de l’adresse IP tronqué qui ne permette donc pas de retrouver l’adresse IP originelle mais qui, lorsque l’on rapplique le hash permet de vérifier si l’utilisateur a déjà signalé telle ou telle url. Je continue à réfléchir à une autre solution qui soit encore plus sécurisante…
Bref le site est prêt, l’extension aussi… Ne reste plus qu’un serveur à trouver et si par le plus grand des hasards vous savez où je peux trouver ça en Finlande (à mon avis l’Islande c’est plus dur, je n’y connais pas de datacenter) faites moi signe !
]]>C’est maintenant chose faite et, en installant överallt, vous pouvez désormais intégrer Flattr sur n’importe quel site web 2.0 sans gêner la navigation (c’est mieux quand même ^^) !
Les bugs en question venaient de deux erreurs que j’ai commises :
Attacher la tâche de remplacement à un évènement beaucoup trop précoce (à la construction du DOM alors qu’elle est maintenant attachée à la fin de chargement de la page); ce comportement avait pour effet de ruiner la structure de la page et d’empêcher certains appels Ajax de se faire (pas d’élément du DOM de destination existant).
Et, plus grave, le remplacement, à la barbare, de l’ensemble du code du body par une version intégrant les boutons Flattr. Ce comportement a été solutionné par un parcours des textNodes du DOM de la page et un remplacement au plus bas niveau du DOM (dans le nodeValue du textNode donc) par explosion de la chaine en 3 parties : avant le code, le code, et après le code. Comme on travaille sur des textNodes aucun évènement ne peut être attaché dessus et mes beaux eventlisteners resteront en place ! J’ai aussi du travailler sur une création maison des boutons Flattr, ne pouvant intégrer une iframe aussi simplement dans le DOM que lorsque je travaille avec un bête innerHTML. Le truc cool c’est que du Js à reverse c’est plutôt simple !
Le fonctionnement reste inchangé pour l’utilisateur : il suffit d’utiliser un code de la forme [Flattr=2051] (avec 2051 remplacé par votre ID Flattr) pour que les autres utilisateurs d’överallt voient le bouton Flattr permettant de vous récompenser le plus simplement du monde.
Le plugin aura bientôt une nouvelle fonctionnalité suggérée par Olivier Mehani : l’ajout d’une fonctionnalité permettant de sauver son ID Flattr et de pré-remplir les champs des blogs WP proposant le Flattr-comment ainsi qu’un shortcut permettant d’inclure le code överallt correspondant à votre ID plus simplement (on est informaticiens, on est feignants !).
Et pour tester sans attendre : c’est ici !
Ce n’est un secret pour personne, je suis en contact régulier avec plusieurs membres de l’équipe de Flattr et leur ai donc envoyé le plugin très vite. Le moins que l’on puisse dire c’est qu’il leur a plu : je vous copie colle des extraits de mails envoyés par Eileen et Linus, respectivement Flattr evangelist et co-fondateur :
Eileen (à propos de Peter Sünde) :
I'm very sorry to hear that Peter didn't have time to sit down and chat with you (He is often tight for time), but obviously he knows who you are -- and loves your plugin, so I'm sure he'll try to connect with you soon.
Linus :
Yo! Nice addon you have made! We like!
Je vous fait grâce d’une bonne partie des mails envoyés et reçus, mais apparemment l’idée leur plait et ça risque d’aller encore mieux avec cette version stable. A vrai dire l’idée leur plait tellement que j’ai eu un peu de rab d’invitations, donc je vais en distribuer un peu plus que les fois précédentes : 20 !
c1d7798c4230dbbe9 cc112169646c15ae3 cc23e432ce73db5cc e77e99c68cd4b342c 3dcfaae415428acc5 9da2ac25241f38861 b5910802bad766e8b |
c7d19d505639d3dea 62d2c689fa59203ad fd8b32e76d187127f 26ea3fc8daab92a37 64ff2dd0f9ce3855b 97c8876654d2b060d |
74d67584aaf688381 74ef90389b615aecd e12398d4bd256fdfe 35ebd6fb9a6fb9469 12cb00cf71ee964df 6e64b11c8be193665 670b38eb5d5ca9f11 |
Et pour les curieux qui se poseraient la question : oui il m’en reste encore après ça
]]>Bon en vrai le plan en question n’a rien de diabolique et est plutôt fait pour faire avancer les choses dans le bon sens pour ce qui est de l’intégration de Flattr sur les sites 2.0, les forums, … euh en fait partout hein.
D’ailleurs c’est ce qui a motivé le nom, qui n’a rien à voir avec le Klingon et qui est en fait la traduction suédoise du mot « partout ». Parce que c’est là le but d’överallt : permettre à tous d’utiliser Flattr en dehors des sites où c’est initialement prévu.
Le contenu sur le web d’aujourd’hui est créé en grande partie par les utilisateurs : les réseaux sociaux se multiplient, la plupart des sites d’actus (ceux qui ne le font pas ont un gros métro de retard) permettent de commenter lesdites actualités, les plateformes d’hébergement de vidéo ou de fichier sont plus nombreuses que les sexshops à Pigalle, … C’est ce qu’on appelle communément le web 2.0, et c’est plutôt génial !
Sauf que l’utilisateur (et donc contributeur) de ces plateformes est très dépendant de ceux qui possèdent ladite plateforme et qui a finalement droit de vie ou de mort sur un service qu’il propose, proposera ou ne proposera jamais.
Ainsi les blogs (pour prendre cet exemple) proposant à ceux qui postent un commentaire d’y adjoindre un bouton Flattr sont très rares (en France du moins) et la propagation de cette pratique pourtant très intéressante à la fois pour le blogger (qui voit le nombre et la qualité de ses commentaires augmenter) et pour celui qui commente (qui pourra gagner quelques centimes par commentaires) est entièrement à la merci des bloggers…
Sauf si… Je m’emmêle ! Et là ça commence comme à chaque nouveau projet : par une feuille A4 blindée de trucs illisibles, que j’ai décidé de vous montrer pour une fois en la voyant trainer sur mon bureau :
A partir de ces écritures que même Howard Carter aurait du mal à déchiffrer et après une bonne dose de nicotine, au moins autant de caféine et un peu de rhum est né överallt !
Son fonctionnement est très simple : chaque fois qu’une page s’affiche dans Firefox (et si överallt est activé) l’addon va modifier à la volée le contenu de la page pour remplacer un certain pattern de texte par le bouton Flattr correspondant. Le pattern en question a été choisi pour sa simplicité : [Flattr=2051] (ou 2051 est l’ID de l’utilisateur Flattr, le mien l’occurrence)…
Ainsi, quel que soit le site que vous visitez ou sur lequel vous postez, l’intégration de Flattr ne dépend plus que de ses membres !
Tout ce qu’il vous faut maintenant ce sont les liens : Sur AMO, et la page du projet ! Spread the word and help share the cake
Et pour fêter ça on va se faire péter 5 invitations ?
8ff1e79555a29d9a5
e0c62a470954b0196
89a911b8ecaf6908e
4f4eb5724adf78860
4d49fcf3f8b536cc8
Dans la mesure où c’est tout de même un moyen formidable de fournir des mises à jour et de faire connaitre l’extension à tous je m’y suis conformé et ai renommé IPFuck en IPFlood (credits to @twikito) sur AMO.
Ce changement est en effet limité à AMO, le site ipfuck.p4ul.info reste en ligne et si j’ai bien créé un alias ipflood.p4ul.info, il redirige sur le site déjà en place – de même la page de l’extension ne change pas.
Et puisqu’apparemment je suis un mec vulgaire je vais ajouter : « non mais faut pas me faire chier merde ! »
]]>Mais j’avais un léger soucis avec cette extension : elle ne réduit les URL contenues dans un tweet que si celui-ci fait plus de 140 caractères… Je ne sais pas trop pourquoi, mais ce comportement ne me plaisait pas. J’ai donc résolu le problème ^^
Pour ce faire il va vous falloir éditer l’un des fichiers de l’extension pour en modifier deux lignes. Le fichier se trouve dans votre profil Firefox, dans le dossier chrome de votre extension :
Sous Linux :
/home/[vous]/.Mozilla/firefox/[votre_profil]/extensions/[email protected]/chrome/
Sous Windows :
C:\Documents and Settings\[vous]\Application Data\Mozilla\Firefox\Profiles\[votre_profil]\extensions\[email protected]\chrome\
En remplaçant bien sûr [vous] et [votre_profil] par les valeurs correspondantes. Sous Windows le dossier « Application Data » est un dossier caché, il faut donc en activer l’affichage
Il va s’agir de modifier le fichier twitterfox.js contenu dans le dossier « content » de l’archive Echofon.jar (s’ouvre avec winrar par exemple) elle même contenue dans le dossier chrome de l’extension (donc le chemin précisé au dessus). Si vous avez réussi à trouver le fameux fichier, vous avez déjà fait le plus dur
Il suffit ensuite de modifier la ligne 702 :
if (text.length > 140) {
devient :
if(true){
Et la ligne 715 :
if (url.length > 25 && !url.match(/tinyurl\.com/i)) {
devient :
if (url.length > 10 && !url.match(/tinyurl\.com/i)) {
Sauvez les modifications (en replaçant le fichier twitternotifier.js dans l’archive Echofon.jar si besoin… Normalement il n’y a pas besoin de redémarrer Firefox, mais si ça ne marche pas vous pouvez essayer…
Ainsi chaque fois que vous postez une URL de plus de 10 caractères (au lieu de 25), quelle que soit la taille du tweet en lui même, l’url est réduite via bit.ly
Et si vous voulez encore plus de fun avec Echofon le plus simple c’est encore de me suivre sur twitter : @Paul_Da_Silva (oh le vilain placement !)
]]>Mais les choses ont évolué et les technologies avec et, aujourd’hui, cette donnée n’est plus une donnée sûre !
Pourtant les lois qui continuent à être votées, Hadopi en tête, se basent toutes sur un relevé de ces fameuses adresses.
Depuis des mois (peut-être même plus d’un an) je ne laisse mon adresse IP presque nul part à l’aide d’une extension firefox que je vous avais déjà présenté ici : Modify Headers. Mais cette solution ne me suffisait plus et au vu des événements récents j’ai commencé à me poser des questions sur une généralisation et une simplification de cette méthode que j’utilisai jusqu’alors.
Puis l’actualité a été défrayée par un certain SeedFuck, logiciel de torrent poisoning dont je vous ai rapidement parlé sur mon dernier billet à propos d’Hadopi.
C’est ça ! Il faut que je combine les deux outils pour arriver à une solution très simple à l’utilisation et qui finisse d’achever l’adresse IP qui, encore aujourd’hui, fait accuser des innocents…
C’est ainsi qu’est né IPFuck (nommé d’après SeedFuck donc), le premier logiciel d’HTTP poisoning. Le principe est sensiblement le même qu’avec SeedFuck : il s’agit d’envoyer, en plus de sa vraie adresse IP que l’on ne peut pas masquer sans que les paquets ne se perdent, trois adresses générées aléatoirement, selon des règles que vous choisissez dans les options, ou parmi une liste d’adresses que vous choisissez.
Le serveur qui reçoit la requête l’interprète et renvoie la réponse au bon endroit. La navigation se passe donc exactement comme si vous n’aviez pas installé l’addon pour vous. Mais le site sur lequel vous vous êtes connecté a enregistré (potentiellement, tout dépend du code utilisé) 4 connexions différentes, dont trois sont effectuées avec une adresse qui ne vous appartient pas.
Et pour télécharger ce tout petit plugin qui devrait (enfin) finir de persuader quelques bien pensants que l’adresse IP n’est plus une preuve, c’est ici que ça se passe : IPFuck !
Important : quelques précisions sur l’utilisation et les limites d’IPFuck.
]]>Aujourd’hui je vous propose de revenir sur ce qui restera pour moi une très bonne expérience : le buzz que ce petit projet a généré un peu partout sur la toile.
J’avais prévu initialement de publier la liste des sites bloqués pour prouver que la censure est facile à dissimuler dans un ensemble de sites effectivement «illégaux». Je ne le ferais pas aujourd’hui, pour la simple et bonne raison que de nombreux sites bloqués sont des sites qui servent effectivement à télécharger du contenu (souvent) sous copyright. Aussi je ne compte pas faciliter la tâche de l’Hadopi qui va bientôt entrer en fonction…
Sachez toutefois que la répartition est la suivante :
Cela prend beaucoup de temps de valider un site, de trouver un commentaire amusant à ajouter. Surtout dans le cas de sites que l’on ne connait pas déjà.
Vous vous en doutez certainement : je n’ai pas l’intention de passer mes nuits à valider des sites un par uns… Donc, ce chiffre ne fera qu’augmenter…
Grâce à un beau backlink sur PCInpact, la fréquentation a explosé et le trustrank Google a du faire de même à en juger par le pagerank (PR4 en quelques jours) et le référencement global de l’Hadopi Explorer malgré une conception pas vraiment SEO-Friendly…
Et au dela de la qualité de plusieurs backlinks (nofrag, linuxfr, dafuckingblueboy, …) c’est la quantité qui est impressionnante : depuis le lancement du site, et d’après Google Analytics, les visiteurs de l’Hadopi-Explorer sont venu de plus de 600 sites différents (623 à l’heure où j’écris ces lignes) !
Petite nouveauté (pour moi), beaucoup de visiteurs (700+) sont arrivés directement depuis twitter. il faut dire que de très influents membres ont Retweeté un message original de @Manhack – parmi lesquels @Vidberg, @Jmplanche et @Demarcq, … Merci donc à eux, et plus particulièrement à @Manhack !
Et bien entendu avec les backlinks viennent les visiteurs : en très exactement 115 jours c’est plus de 50.000 visiteurs qui se sont amusé à mettre mon serveur à plat. Sur ces 50.000 gentils sympatisants de l’Hadopi désireux de se mettre en conformité avec la nouvelle mesure de racket «culturel» on compte plus de 17.000 visiteurs en provenance de PCInpact (ils ont bien mérité un deuxième BL).
Du côté de l’extension, c’est plus de 7.000 pirates (7.014 à l’heure où j’écris) qui n’ont plus accès à The Pirate Bay (et à deux ou trois autres sites). D’après le tableau de bord des développeurs, l’extension est téléchargée 250 fois par semaine et compte 800 utilisateurs quotidiens.
Inutile de tourner plus que ça autour du pot : les chiffres sont bons, très bons pour un petit projet lancé sur le compte d’une blague…
Je vais commencer par remercier Geoffrey Dorne (encore une fois) pour m’avoir laissé utiliser son logo «Christine is wathing you» qui n’est plus trop d’actualité maintenant…
Ensuite bien entendu, remercier à nouveau PCInpact, et plus particulièrement Marc Rees qui, non content de m’avoir apporté plus de visiteurs que je n’en demandais, m’a même proposé de m’aider à valider des sites (comme si il n’avait pas assez de taff déjà !)
Et puis je vais remercier chacun des 50k+ visiteurs qui ont fait de ce projet ce qu’il est : une belle farce, qu’on aimerait voir rester une blague… mais qui nous menace toujours un peu plus.
]]>Malheureusement (et bien entendu) cette technique ne fonctionne pas pour tout.
L’idée est de simuler la navigation via un proxy en modifiant les headers HTTP de votre requête. Comme on travaille au niveau application on ne pourra bien sûr pas trafiquer toutes les entêtes, mais disons que d’en modifier la plupart peut suffire.
Nous allons travailler sur trois header principalement : via, x-forwarded-for et client-ip. Ces headers sont normalement envoyés par les proxys pour renseigner sur la réelle provenance des visiteurs qui utilisent le proxy.
Sans proxy | transparent | anonyme | high anonymity | |
REMOTE_ADDR | votre IP | IP du proxy | IP du proxy | IP du proxy |
HTTP_VIA | n/a | n/a | IP du proxy | n/a |
HTTP_CLIENT_IP | n/a | n/a | n/a | n/a |
HTTP_X_FORWARDED_FOR | n/a | votre IP | votre IP | n/a |
La mention «IP du proxy» n’est pas tout à fait vraie : certains serveurs proxy envoient, à la place, une signature (uniquement sur le header HTTP_VIA) alors que d’autres font transiter les paquets par d’autres serveurs plus plus d’anonymat.
Sur ce tableau on se rend compte que le header HTTP_CLIENT_IP n’est pas utilisé par les proxys. Pourtant, certains webmasters l’utilisent dans leur configuration et en évaluent la valeur pour essayer d’obtenir la vraie IP du visiteur.
L’idéal serait donc de modifier le header REMOTE_ADDR. Mais comme les choses ne sont jamais idéales, j’ai une mauvaise nouvelle : c’est le seul que nous ne pourrons pas modifier pour la simple et bonne raison que ce header est défini par la couche physique du modèle OSI. Les trois autres headers, par contre, sont envoyés par la couche application dudit modèle.
La bonne nouvelle, c’est que l’on peut, du coup, les modifier via une simple extension firefox : Modify Headers !
Après avoir téléchargé et installé l’extension, vous allez ajouter un par un, les trois headers qui nous intéressent dans la fenêtre qui s’ouvrira en cliquant sur Outils>Modify Headers.
Votre configuration devra ensuite ressembler à l’image ci-dessous.
Attention : notez bien que les paramètres à modifier sont X-FORWARDED-FOR, CLIENT-IP et VIA et pas HTTP_X_FORWARDED_FOR, HTTP_CLIENT_IP et HTTP_VIA.
Vous pouvez ensuite faire en sorte que cette modification soit valide tout le temps, même si la fenêtre Modify Headers est fermée. Pour cela cliquez sur le bouton Configuration, puis cochez la case Always on.
A moins que le site que vous ne visitiez un site dont le webmaster ne se base que sur le paramètre $_SERVER[‘REMOTE_ADDR’] – ce qui existe, mais n’est pas la majorité, l’IP relevée sera celle que vous aurez spécifié vous même.
Ainsi pour voir un contenu normalement réservé aux Etats-Unis comme les épisodes de South Park Studios ou les vidéos de NBC par exemple, il vous suffit de choisir une adresse IP Américaine (66.11.***.*** par exemple).
Certains sites ne sont pas très heureux de la modification du header HTTP_CLIENT_IP avec en tête search.twitter.com. Pour le faire refonctionner rien de plus simple : désactiver ledit header.
Il suffit d’utiliser l’IP de quelqu’un d’autre pour se faire passer pour lui. Par respect, et pour éviter de faire accuser à tort des innocents je surf en général sous l’IP 0.0.0.0 mais il est assez facile de se faire passer pour un dignitaire du ministère de la culture par exemple. Il suffit pour cela de relever l’IP qui revient la plus fréquemment sur les éditions de l’article Hadopi sur Wikipedia (private joke inside).
Pour réellement spoofer une adresse IP (la faire passer en REMOTE_ADDR) c’est un brin plus compliqué, mais cela reste possible. Nul doute que des applications permettront bientôt de le faire en un clic… Honnêtement si j’avais les connaissances suffisantes, je l’aurais fait depuis l’annonce même de la loi Hadopi !
]]>Sauf que parfois on veut savoir sur quoi on clic, avant de cliquer. Ne serait-ce que pour éviter de se faire rick-rolled…
C’est là qu’intervient la superbe (oui je pèse mes mots) extension firefox LongURL Mobile Expander.
Sauf que depuis la dernière mise à jour, lorsque vous ouvrez un fichier local ou que vous allez sur un site local (http://localhost par exemple) vous avez le droit à une superbe erreur javascript à peine gênante :
Error: current_domain is null
La bonne nouvelle c’est que j’ai réussi à isoler la source du problème (la fameuse extension LongURL Mobile Expander) et que, du coup, j’ai corrigé quelque peu cette extension pour qu’elle continue à fonctionner sans pour autant m’empêcher de bosser en local…
Pour cela il suffit de chercher le dossier de l’extension dans votre profil firefox. Sous Linux par exemple :
cd
cd .mozilla/firefox/s54sdf454.default/extensions
rgrep -iFlr « longURL » .
Où s54sdf545.default est votre dossier de profil. Si vous ne savez pas ce que c’est, j’ai une bonne nouvelle : vous ne devriez en avoir qu’un.
Grâce à ces commandes vous devriez avoir retrouvé le dossier d’installation de l’extension. Il vous suffit ensuite d’ouvrir le dossier et d’éditer le fichier content/script-compiler.js
Juste avant la ligne 101 de ce fichier (alert(e2);) vous allez rajouter la condition suivante :
if(e2!= »Error: current_domain is null »)
Ce qui donnera :
if(e2!= »Error: current_domain is null »)
alert(e2);
En gros : si l’erreur est celle qui nous embête : on ne l’affiche pas !
Il suffit ensuite de redémarrer firefox, et d’apprécier la différence !
]]>