Mirari ² | mOnocle | yAronet | Ti-Fr

Rémi Caput

Mises à jour

18.11.2011

Refonte des pages "informatique" du site.

Plus d'informations...

14.08.2011

Ajout d'un moteur de template dans les projets Web.

Plus d'informations...

Parcours

Profil

Vous pouvez télécharger mon CV en suivant [javascript requis].

mOnocle

Présentation

mOnocle est un proxy HTTP réalisé en PHP, qui permet de se connecter à un site internet en passant par un serveur intermédiaire. Ce mécanisme permet par exemple :

  • De ne pas communiquer d'informations personnelles au site visité (par exemple l'adresse IP, la provenance ou le navigateur internet utilisé) ;
  • D'accéder à un site web bloqué, à cause par exemple de la configuration du réseau dans lequel se trouve l'utilisateur.

Le réalisation d'un proxy de ce type est relativement simple, mais son bon fonctionnement dépend de la rigueur avec laquelle les standards internet (en particulier le protocole HTTP et le langage HTML) sont respectés. Lors d'une connexion habituelle à une page internet, les principaux échanges peuvent être résumés par ces étapes :

  1. Le navigateur effectue une requête DNS pour obtenir l'adresse du serveur qui héberge la page demandée, puis attend une réponse ;
  2. Une fois l'adresse du serveur obtenue, le navigateur s'y connecte et envoie une requête HTTP pour obtenir le contenu de la page ;
  3. Le navigateur reçoit le contenu de la page demandée, et l'affiche à l'utilisateur.

En utilisant mOnocle, ces étapes sont modifiées de la façon suivante :

  1. Le navigateur demande au proxy d'accéder à une page internet ;
  2. Le proxy reçoit cette demande, et trie en fonction des options sélectionnées les informations qu'il communique, et celles qu'il masque ou remplace pour préserver l'anonymat de l'utilisateur ;
  3. Le proxy effectue une requête DNS pour obtenir l'adresse du serveur cible ;
  4. Le proxy reçoit l'adresse du serveur, s'y connecte et effectue une requête HTTP semblable à celle qu'aurait effectué l'utilisateur, mais dont certaines informations peuvent avoir été modifiées ou supprimées ;
  5. Le proxy reçoit le contenu de la page demandée, et le retraite afin d'en adapter certains paramètres, avant de le transmettre à l'utilisateur.

Au cours de ce processus, l'utilisateur ne communique jamais directement avec le serveur : le proxy joue un rôle d'intermédiaire dans toutes les communications, d'où son nom en français de "serveur mandataire". Les étapes 2 et 5 sont celles qui demandent le plus d'attention, respectivement pour transmettre une demande équivalente à celle exprimée par l'utilisateur et lui restituer un résultat comparable à celui qui aurait été obtenu sans proxy, tout en se substituant à lui de façon à conserver son anonymat vis à vis du serveur cible.

Par exemple, tous les liens doivent être transformés pour éviter que l'utilisateur, en cliquant dessus, se retrouve envoyé directement sur le site visé plutôt que de passer à nouveau à travers le proxy. Cette procédure, relativement simple dans le cas de liens classiques, se complexifie dans le cas de requêtes effectuées par des scripts (AJAX) ou de contenu modifié dynamiquement.

L'objectif principal du projet mOnocle est de traiter au mieux les requêtes et leurs résultats, afin de fonctionner en respectant les standards utilisés et en restant aussi invisible que possible pour l'utilisateur.

Utilisation

mOnocle est accessible à l'adresse internet suivante : http://www.monocle.fr/.

Une fois connecté à la page principale de mOnocle, seule une zone de saisie comportant une ligne de texte et deux boutons est visible. Il suffit de saisir une adresse internet (de la même façon qu'elle aurait été saisie dans la barre d'adresse de votre navigateur) et de cliquer sur le bouton "Naviguer" pour démarrer la navigation à travers le proxy.

Le bouton "Options" permet de faire apparaître la zone de configuration, qui propose plusieurs paramètres affectant le fonctionnement du proxy. La liste de ces options et de leurs effets respectifs est détaillée dans le paragraphe suivant.

Référence

Voici la liste des options disponibles dans mOnocle, et la description de leurs effets :

  • Encodage utilisé :
    • Description :
      • L'encodage des pages HTML peut être spécifié par le serveur, ou par les pages elles-même. Des mauvais réglages ou des incohérences provoquent parfois des problèmes d'affichage avec certains sites (au niveau des accents, entre autres). Cette option permet d'indiquer à mOnocle la méthode à suivre pour reconnaître l'encodage des pages HTML.
    • Valeurs :
      • Respecter l'encodage spécifié par les pages : force l'encodage indiqué dans les balises <meta> de la page, au lieu de se conformer à celui indiqué par le serveur (remplace si besoin celui indiqué dans l'en-tête "Content-Type").
      • Détecter automatiquement l'encodage : essaie de déterminer l'encodage en analysant le contenu des pages reçues.
      • Suivre l'encodage du serveur : restituer tel quel l'encodage indiqué par le serveur (c'est à dire celui indiqué dans l'en-tête "Content-Type").
  • Filtrer le contenu :
    • Description :
      • Par défaut, mOnocle transmet toutes les réponses du serveur à l'utilisateur. Cette option permet de filtrer les réponses en fonction de leur type, de façon à éviter le contenu non désiré (par exemple Flash, MP3, etc).
    • Valeurs :
      • Autoriser tous les contenus sans distinction : désactiver tous les filtres et transmettre les réponses du serveur quel que soit leur type.
      • Afficher uniquement les images et les textes : ne transmettre que les réponses au format texte ou image (type MIME text/* ou image/*).
      • Afficher uniquement les textes : ne transmettre que les réponses au format texte (type MIME text/*).
  • Traitement des scripts :
    • Description :
      • Les scripts JavaScript peuvent exécuter des requêtes, et il est difficile de déterminer exactement l'effet d'un script sans procéder à une analyse complète du code source, ce que mOnocle ne peut pas faire dans un temps raisonnable. Il est donc possible de traiter du mieux possible les scripts, ou de les désactiver complètement.
    • Valeurs :
      • Adapter les requêtes JavaScript : mOnocle tentera d'intercepter les requêtes effectuées par les scripts JavaScript. Les requêtes Ajax sont globalement bien reconnues, mais les scripts peuvent néanmoins effectuer des redirections ou des chargements de ressources qui peuvent ne pas être détectés par le proxy.
      • Désactiver les scripts : bloquer l'intégralité des scripts JavaScript. Gardez à l'esprit que certains sites ne peuvent pas fonctionner sans leurs scripts, et deviendront donc inutilisables si cette option est activée.
  • Gestion des cookies :
    • Description :
      • Les cookies ne peuvent pas être transmis tels quels à l'utilisateur, étant entre autres limités au domaine réel du site, alors que l'utilisateur se trouve sur le domaine qui héberge le proxy. Il est donc nécessaire de les adapter, ce que mOnocle propose de faire de plusieurs façons.
    • Valeurs :
      • Traduire les cookies pour le navigateur : les cookies sont adaptés pour permettre au navigateur de les enregistrer localement, et de les réutiliser. Ils sont donc enregistrés chez l'utilisateur et transférés au proxy à chaque requête, comme dans le cas d'une connexion sans proxy.
      • Enregistrer les cookies sur le serveur : mOnocle se charge de la gestion des cookies, qui ne sont alors plus envoyés à l'utilisateur. Leur durée de vie est limitée à celle d'une session (mOnocle utilise une session pour y stocker les cookies), mais aucune information confidentielle n'est ainsi échangée entre mOnocle et l'utilisateur.
      • Bloquer les cookies : mOnocle bloque complètement les cookies et ne les transmet pas à l'utilisateur. Il deviendra donc impossible de s'authentifier à certains sites, par exemple.
  • Encodage des adresses :
    • Description :
      • Par défaut, les adresses internet (URL) des sites visité sont transmises en clair dans les paramètres d'accès au proxy. Il est possible de changer ce paramètre, pour empêcher un intermédiaire sur le réseau entre le proxy et l'utilisateur de connaître les adresses des sites visités.
    • Valeurs :
      • Transmettre les adresses en clair : il s'agit du comportement standard, dans lequel les adresses sont communiquées en clair entre le proxy et l'utilisateur.
      • Encoder les adresses en base64 : appliquer une transformation "base64" sur les URLs échangées entre l'utilisateur et le proxy. Cette transformation n'empêche pas la consultation d'un intermédiaire, mais trompera la majorité des pare-feu qui se basent sur une recherche de motif pour bloquer l'accès à certains sites.
      • Générer un ID par adresse : chaque adresse reconnue par mOnocle est associée à un identifiant unique, et cet identifiant est communiqué à l'utilisateur. Les adresses réelles ne sont jamais échangées entre l'utilisateur et le proxy, et donc impossibles à espionner.
  • Header "Referer" :
    • Description :
      • À chaque requête, un navigateur internet communique habituellement au serveur cible l'adresse à laquelle il vient d'accéder. Cette information permet aux sites de suivre la navigation des utilisateurs, mais peut également être utilisée pour certaines fonctionnalités. Cette option permet de choisir comment mOnocle doit communiquer cette information.
    • Valeurs :
      • Laisser l'origine indiquée par le navigateur : transmettre la valeur qui aurait été normalement envoyée par le navigateur s'il s'était connecté directement au site (c'est à dire sans proxy). Cette option fait en sorte que mOnocle simule l'en-tête "Referer" à partir de celle réellement envoyée par l'utilisateur, mais en supprimant la trace au proxy.
      • Simuler une requête à partir de l'adresse cible : transmettre une valeur indiquant au serveur cible que l'utilisateur était déjà connecté à l'adresse cible, et souhaite y retourner à nouveau. Cette option permet entre autres d'envoyer une valeur crédible même si le navigateur de l'utilisateur n'envoie aucune information.
      • Ne pas indiquer l'origine de la requête : ne pas transmettre d'information sur l'adresse précédente. Cette option efface l'en-tête "Referer" quelle que soit sa valeur initiale.
  • Header "User-Agent" :
    • Description :
      • L'en-tête "User-Agent" permet à un site de déterminer, entre autres, le type de navigateur utilisé par l'utilisateur (ainsi que son système d'exploitation). mOnocle permet de falsifier cette information en la remplaçant par l'une des options proposées.
    • Valeurs :
      • Laisser la valeur définie par le navigateur : transmettre la valeur "User-Agent" réellement envoyée par le navigateur de l'utilisateur, et donc permettre au serveur cible de connaître le navigateur et le système utilisés.
      • Se faire passer pour Google Chrome : simuler une requête effectuée depuis un navigateur Google Chrome sous Windows XP.
      • Se faire passer pour Mozilla Firefox : simuler une requête effectuée depuis un navigateur Mozilla Firefox 3.0 sous Windows XP.
      • Se faire passer pour Internet Explorer : simuler une requête effectuée depuis un navigateur Internet Explorer 7 sous Windows XP.
      • Se faire passer pour Opera : simuler une requête effectuée depuis un navigateur Opera 9 sous Windows XP.
      • Ne pas indiquer le type de navigateur utilisé : ne pas envoyer d'information sur le navigateur et le système utilisé. Certains sites ne s'attendent pas à ce que cette information soit manquantent, et peuvent vous refuser l'accès ou avoir un comportement inattendu si vous choisissez cette option.