Gravatar couramment utilisé Blog perso de Paul Da Silva

[CensorCheap] Gros soucis dans le codage :/

Posted on | août 18, 2010 | 8 Comments

Bon, ce qui devait arriver arriva : je suis arrivé à mes limites sur le développement d’addons Firefox avec CensorCheap et malgré deux jours à m’arracher les cheveux il y a quelque chose qui m’échappe et que je n’arrive pas à solutionner seul… Et c’est là que je me suis dit : tain mais il doit bien y avoir quelqu’un qui sait faire ça et qui lit mon blog… Ou qui connait quelqu’un qui sache le faire… Bref partagez mon soucis, il trouvera une solution et moi je conserverai quelques cheveux…

Pour rappel

Je ré-explique un peu le principe de l’extension pour que vous compreniez d’où vient le soucis :

L’extension est installée et l’internaute navigue tranquillement. Tant qu’il ne rencontre pas d’erreur l’extension est dormante et ne communique pas avec le serveur de CensorCheap.

Lorsque l’utilisateur tombe sur une erreur (404 ou nom de domaine inconnu), l’extension envoie l’url en question au serveur de CensorCheap. Si l’url est connue pour être censurée dans le pays d’où vient la requête (geo-localisation sur l’IP), on prévient l’utilisateur. Sinon on lance un test pour voir si, dans le pays où est situé le serveur de CensorCheap l’url est accessible ou pas. Si l’url est accessible, elle est sauvée comme ayant rencontré une anomalie.

Au bout d’un certain nombre d’anomalie similaires (mêmes url, pays d’origine et FAI) sur une période donnée (tout cela est à ajuster), l’url est considérée comme bloquée dans le pays et par le FAI en question.

Cette description ne concerne que la première version de CensorCheap qui ne détecte que les filtrages DNS et IP et pas les DNS menteurs…

Et là où ça bloque ?

Explication un peu technique de ce qui est fait et de ce qu’il reste à faire…

J’utilise des observers pour surveiller le comportement du navigateur sauf que je ne peux surveiller que deux évenements différents : l’envoi de la requête (http-on-modify-request) et la réception de la réponse (http-on-examine-response).

Dans le cas d’une erreur 404 je peux l’intercepter en surveillant le retour (examine-response donc), mais dans le cas d’une erreur de DNS (nom de domaine inconnu) il n’y a pas de retour et donc pas de responseStatus (le fameux 404, ou 200 quand tout va bien notamment).

J’ai envisagé de surveiller les requêtes sortantes et de les enregistrer pour surveiller les retours qui n’arrivent pas… Mais ça me paraît extrêmement complexe pour si peu et surtout les risques de faux positifs sont trop élevés…

Voilà si quelqu’un a déjà mis cela en place ou connait une extension au code libre qui détecte ce type d’erreurs pour une raison x ou y et dont je puisse décomposer le fonctionnement pour m’en inspirer qu’il poste un commentaire ici ou me contacte par mail… Sinon n’hésitez pas à RT pour que quelqu’un de plus expérimenté que moi dans le domaine me file un coup de main.

Le projet a donc pris quelques  jours de retard mais il sortira de toutes façons…

Commentaires

8 Responses to “[CensorCheap] Gros soucis dans le codage :/”

  1. phenix
    août 18th, 2010 @ 13 h 08 min

    Je n’y connait absolument rien en extension firefox. Mais je vais te livrer le fruit de mes réflexions sur ton problème.

    Je me suis surtout concentré sur ton problème de faux-positif: comment le rendre sur à 100%.
    La réponse me semblais assez simple: dans le cas d’un DNS menteur, il suffit de vérifier qu’il ment bien. Pour cela il faudrait proposer à l’utilisateur de « vérifier » l’adresse via un serveur DNS sûr à 100% (au hasard celui du serveur).

    Désolé de ne pas être d’un plus grand secours, j’espère que cela t’aidera.

  2. Paul
    août 18th, 2010 @ 13 h 16 min

    C’est déjà ce qui est prévu, mais le problème est de savoir côté client (donc le poste sur lequel est installé l’extension) que le site est bloqué et pour ça détecter l’erreur « no such domain » renvoyé par le DNS consulté par le client.

    Si l’erreur est détectée alors l’extension envoie l’url en question au serveur pour comparer la réponse. Si effectivement le ndd n’existe pas c’est juste une erreur de saisie de l’utilisateur, sinon c’est que le site est inaccessible côté client alors qu’en ligne… Donc potentiellement filtré.

  3. Baztoune
    août 19th, 2010 @ 9 h 27 min

    Bonjour Paul,
    je viens via twitter, suite à ton appel relayé par @Navavo. Ton problème dépasse de loin mes connaissances, et est d’ailleurs assez éloigné d’un problème d’addon, mais voilà ce que j’en ai pensé : pourquoi ne pas parser la page (Firefox propose une page d’erreur dédiée aux problèmes DNS non?) pour déterminer si l’adresse est injoignable, et donc déclencher le test coté serveur par la suite?
    Attention aux proxy (comme celui derrière lequel je me trouve), qui renvoient des pages d’erreur personnalisées.

    Cette solution n’en est pas vraiment une, mais j’espère qu’elle peut te permettre de mettre en place un contournement.

    Bastien.

  4. Paul
    août 19th, 2010 @ 9 h 34 min

    Bonjour et merci de ton aide,

    Le problème est double par rapport à cette solution (déjà envisagée par ailleurs) : les pages peuvent être personnalisées de beaucoup de façons et donc un parsage qui se baserai sur des éléments qui sont modifiés par un élément x ou y du navigateur du client renverrai toujours la même réponse : pas d’erreur DNS.

    Mais surtout : il me semble (à vérifier ceci dit) que ces pages sont internes à chrome et ne sont du coup pas accessibles depuis un addon. Enfin, dernier détail toujours en rapport avec cela : comment savoir à quel moment parser vu que je n’ai pas de retour et donc pas d’évènement « trigger ».

    Hier soir je me suis aéré un peu la tête, ce soir je m’y remet full time et j’espère arriver à une solution. Si je ne trouve pas je me baserai dans un premier temps uniquement sur les 404, mais pour le coup ça ne serait pas la censure qui serait « cheap » mais le détecteur de censure :/

  5. iArnaud
    août 19th, 2010 @ 10 h 32 min

    pourquoi ne pas demander un peu d’aide des développeurs de firebug et autres outils dans le genre. Ca n’est pas la même chose mais si je ne me trompe, ils détectent les erreurs dns. Je pense que tu vas avoir besoin d’aide de développeur bien plus experts que nous dans cette matière.

  6. MrDoy
    août 21st, 2010 @ 16 h 57 min

    Dans certains états, c’est pas toujours un 404 que les gens ont mais un Access Denied, je suppose une page personnalisée et pas forcément avec un code…
    Après, je connais pas exactement le fonctionnement.

  7. Qyy
    octobre 1st, 2010 @ 6 h 16 min

    Bonjour,

    Vous avez surement déjà pensé à ça, mais ne sait-on jamais, une piste intéressent à suivre serait de voir comment Firebug gère ça…

    En effet, si vous allez sur un domaine inconnu de votre DNS, deux chose sont à noter dans Firebug :

    1) dans l’onglet « Réseau »-> « Tous » vous pourrez voir la valeur « aborded » en lieux et place du statut code

    2) AMHA la piste à creuser : dans l’onglet script, vous pourrez constater le chargement d’un script avec les paramètre suivants :

    « about:neterror?e=dnsNotFound&u=http%3A//mon.domaine.bidon/&c=UTF8&d=Firefox%20ne%20peut%20trouver%20le%20%C3%A0%20l%27adresse%20mon.domaine.bidon. »

    A voire donc comment Firebug capture cette information qui semble contenir tous les éléments dont vous avez besoin.

    En espérant vous avoir été utile,
    Cordialement.

  8. Justis
    novembre 26th, 2012 @ 10 h 17 min

    That’s a brilliant answer to an itnerestnig question

Leave a Reply





Edito

Ancien journaliste, ancien entrepreneur, ancien (ir)responsable Pirate, actuel citoyen qui s'intéresse à la politique et à son évolution.

Read moar !.

Retrouvez moi sur :

Suivez moi sur twitter sur facebook sur wikipedia Ajouter ce blog a votre lecteur RSS

Bitcoin

bitcoin logo
1GZnMQ9wXyifxCnDEqg8CSGdngWcKWptHv

Piratons la démocratie

piratons la democratie

One more thing !

0100 0011 0110 1000 0110 0001 0110 1110 0110 0111 0110 0101 0111 0010 0010 0000 0110 1100 0110 0101 0010 0000 0110 1101 0110 1111 0110 1110 0110 0100 0110 0101 0010 0000 0110 0101 0110 1110 0010 0000 0111 0011 0010 0111 0110 0001 0110 1101 0111 0101 0111 0011 0110 0001 0110 1110 0111 0100 0010 0000 0010 1101 0010 0000 0110 1111 0110 1110 0010 0000 0111 0110 0110 0001 0010 0000 0110 0010 0110 1111 0110 1001 0111 0010 0110 0101 0010 0000 0111 0101 0110 1110 0010 0000 0110 0011 0110 1111 0111 0101 0111 0000 0010 0000 0011 1111

Tm9uIGNlbGVsIGzgIGVzdCBqdXN0ZSBwb3VyIHRlIGZhaXJlIHBlcmRyZSA1bW4gOyk=

Relationship Closeness Inventory

Promo code Genesis Mining

Sha 256 cloud mining

Best Bitcoin debit card

Zcash Mining