|
SwiftSurf
Proxy web intelligent
|
|
Presentation
SwiftSurf est un proxy web qui peut être utilisé pour les protocoles
http (1.0 et 1.1) et https. Il permet de plus de filtrer les pages
acceptées et de limiter l'accès grâce à des mots de passe.
a. Vocabulaire
- Proxy : Intermédiaire entre votre browser (Netscape
par exemple) et Internet. Le browser demande au proxy les pages
qu'il veut récupérer, et ce dernier se charge
d'aller les chercher sur internet et renvoie la réponse au
browser.
- http : hyper text transfer protocol : langage utilisé sur
internet pour transferer les pages html.
- https : secure http : protocole sécurisé qui permet des
transmissions sûres sur internet.
- filtrant : Permet de censurer certaines pages ou de les modifier
avant qu'elle ne soit affichées dans le browser. Permet aussi
d'empêcher que certaines informations personnelles ne soit
diffusées sur internet.
b. Intérêt du filtrage
- Censure : il est possible de filtrer les urls contenant sex,
xxx ou autres.
- Accélération du chargement des pages : Les
pages html contiennent beaucoup d'informations inutiles
(publicités en particulier). Ne pas les
télécharger
permet de gagner un temps précieux, en particulier si l'on
a un accès internet par l'intermédiaire d'un modem,
dont le débit est généralement assez lent.
- Non diffusion d'informations personnelles. Il est possible de
filtrer toutes les informations envoyées par votre browser vers
les sites internet, pour éviter par exemple que celui-ci
n'envoie votre nom ou toute autre information personnelle.
- Afficher toutes les informations que votre browser échange avec
l'extérieur.
NB: le filtre agit ici sur l'url (nom de la page), mais pas sur son
contenu. Ceci cependant est suffisant dans un premier temps car
l'url reflete souvent le contenu de la page.
Configuration
Toute la configuration de SwiftSurf se fait au moyen du fichier de
configuration . Les commentaires commencent par
le symbole # et s'étendent jusqu'à la fin de la ligne.
Par défaut, swiftsurf cherche le fichier de configuration parmi les
fichiers suivants : ./swiftsurf.conf, $HOME/.swiftsurf,
/etc/swiftsurf.conf, /dev/null. Pour spécifier un fichier, utiliser
l'option -c.
En principe, vous n'avez rien à modifier dans ce fichier. Pour
rajouter des urls que vous voulez supprimer, allez dans le fichier
"forbidden". Pour un exemple de fichier de configuration qui utilise
des profils, voyez swiftsurf.conf.school.
Configurations générales
Une première partie des options de configurations concerne toutes
les connexions avec les proxy :
- port : port sur lequel le proxy tourne.
- logFile : nom du fichier dans lesquels seront écrits les log
(par défaut, ils sont affichés sur stdout)
- connectFrom : adresses depuis lesquelles il est autorisé de se
connecter (sous forme de redex).
- maxConns : nombre maximum de connexions acceptées en parallèle.
- nextProxy : Si les requêtes doivent être
redirigées vers un autre proxy, donner son nom et le port sur
lequel on se connecte (ex : www 8080).
- noProxy : Utile seulement si useProxy est activé : indique une
liste de serveurs auxquels on peut accéder directement (ie sans
utiliser le proxy suivant). Un item de cette liste peut contenir des
caractères jokers (* ou ?). Cette liste doit se terminer par end.
- answerGIF : donne le nom d'une image qui sera celle renvoyée en lieu
et place de la page interdite. Si cette ligne est absente, une image
unie noire sera renvoyée.
Utilisation de profil
Avec SwiftSurf, il est possible de définir plusieurs profils
d'utilisateurs (selon les accès autorisés par exemple). Pour ce faire
on définit un ou plusieurs profils de la façon suivante :
profile login:pass
profOpt1
profOpt2 ...
endProfile
Il est aussi possible de ne définir aucun profil (ce qui évite d'avoir
à donner un mot de passe pour se connecter).
Les options possibles pour un profile (profOpt dans l'exemple
ci-dessus) sont les suivantes :
- forbiddenFile : donne le nom d'un fichier qui contient une liste
d'urls interdites.
- forbiddenUrl : debut de la liste des urls a interdire : Un item de
cette liste peut contenir des caractères jokers (* ou ?). Ces urls
seront remplacées par une image de votre choix. Cette liste
doit se terminer par end.
- allowedUrl : début de la liste des urls autorisées :
si ce champ existe dans le fichier de configuration, seules les urls
qui correspondent à l'un des éléments de la liste
sont affichées. Les autres sont traitées comme les
"forbidden". Par défaut, toutes les urls sont autorisées.
- forbiddenHeader : début de la liste des headers http qui
sont interdits. Tout header qui coincide avec un élément
de cette liste est supprimé. Ceci est un moyen efficace de
s'assurer par exemple qu'aucun cookie n'est utilisé.
- stats : entier indiquant quel niveau de statistique est désiré :
0 signifie rien, 1 signifie afficher toute les urls demandées en
indiquant si elles sont acceptées ou refusées, 2 rajoute en plus la
date, l'heure et l'adresse ip du client de la requête.
- debug : indique le niveau de debug souhaité (entier
positif). 0 signifie qu'il ne faut afficher aucune information de
deboguage. Si vous voulez me signaler un bug, merci de m'indiquer
l'output du programme avec debug 2.
- request : permet d'afficher tout ou partie de la requête
envoyée au serveur. Le nombre indiqué est la somme des
entiers suivants : 1 si l'on veut afficher les headers et 2 pour
afficher le contenu (method POST).
- answer : permet d'afficher tout ou partie de la réponse
renvoyée au browser. Le nombre indiqué est la somme des
entiers suivants : 1 pour afficher les headers et 2 pour
afficher le contenu (le document demandé).
Télécharger la dernière version (Change Log)
- Télécharger le
code source.
Apres désarchivage ("tar zxvf swiftsurf.tar.gz" sous
Linux), la compilation se fait dans le répertoire swiftsurf
avec la commande "make". Il est indispensable d'avoir un compilateur
ocaml correctement
installé.
- Télécharger une version précompilée (l'exécutable est swiftsurf)
A faire
- Comprendre les requête FTP
- Ajouter un cache pour les pages html
- Faire du prefetching