|
SwiftSurf
Proxy web intelligent
|
|
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 ou en
fonction de l'adresse IP.
Télécharger la dernière version (Change Log)
Voici le lien vers la
page de téléchargement. Elle contient le code source ainsi que des
versions précompilées pour certaines architectures.
Si vous compilez swiftsurf pour une autre architecture, merci de
m'envoyer le programme compilé à l'aide de buid_tgz.sh.
Compilation et utilisation
La compilation se fait tout simplement tapant "gmake" dans le
repertoire obtenu après décompression. Il est indispensable d'avoir un
compilateur ocaml correctement
installé. En cas de problème, par exemple si vous ne disposez pas de
compilateur natif pour ocaml, vous pouvez essayer "gmake byte", qui
construit un programme bytecode au lieu d'un programme natif.
Pour installer swiftsurf sur votre machine, passez root (avec su)
et tapez "gmake install".
Il convient ensuite de configurer votre navigateur pour qu'il
utilise swiftsurf. Avec Netscape ou Mozilla, allez dans
Edit->Preferences->Advanced->Proxies, sélectionner "Manual
proxy configuration" et indiquer localhost avec le port 8080 comme
proxy pour http et https.
Swiftsurf se lance ensuite avec la commande swiftsurf, qui accepte
les options suivantes :
- -c conf_file : permet de définir le fichier de configuration à
utiliser. Par défaut, swiftsurf cherche le fichier de configuration parmi
les fichiers suivants : $HOME/.swiftsurf, /etc/swiftsurf.conf,
./swiftsurf.conf, /dev/null.
- -d : mode daemon
- -help : affiche la liste des options disponibles.
Présentation
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.
- Confort : Supprimer des pages web toutes les publicités qui
détournent l'attention.
- 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.
- Surveiller 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 reflète 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, la liste des urls interdites se trouve dans le fichier
swiftsurf.forb. C'est donc ce fichier qui est à modifier en priorité.
Pour voir un fichier de configuration complexe, consulter
swiftsurf.conf.school.
Configurations générales
Une première partie des options de configurations concerne toutes
les connexions avec le proxy (Tous les mots clefs peuvent
indifféremment être écrits en minuscules ou en majuscules) :
- 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).
- 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). Un troisième argument optionnel
fournit l'authentication pour le proxy, sous la forme user:passwd.
- noProxy : Utile seulement si nextProxy 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 peut (optionnellement) se
terminer par end (pour la clarté du fichier).
- mimeType : Permet de définir une association entre une extension
et un type mime, utile si votre navigateur ne reconnaît pas le type de
votre document de remplacement.
- forbiddenReqHeader : début de la liste des headers http qui
sont interdits pour la requête. 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é.
- forbiddenAnsHeader : idem pour les headers de la réponse.
- addReqHeader : ajoute un header à toutes les requêtes envoyées au
serveur. La norme http exige que cet header soit de la forme "xxxx:
yyyyyyy", où les x ne doivent être ni un espace, ni ":", ni un passage
à la ligne, alors que les y peuvent être n'importe quoi sauf un
passage à la ligne.
- addAnsHeader : ajoute un header à toutes les réponses renvoyée à
l'utilisateur. La norme http exige que cet header soit de la forme
"xxxx: yyyyyyy", où les x ne doivent être ni un espace, ni ":", ni un
passage à la ligne, alors que les y peuvent être n'importe quoi sauf
un passage à la ligne.
- overrideUseragent : change le champ User-Agent des headers (ce
champ donne le nom du navigateur). Ceci peut-être utile pour
contourner les politiques d'accès de certains sites, comme msn.com (ex
: overrideUseragent Mozilla/4.76).
- timeout : timeout pour une connection inactive (defaut 30 :
sec). une valeur de 0 met un timeout infini.
- maxConns : nombre maximum de connections simultanées autorisées
(defaut : infini).
- 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.
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 suivie du nom d'un fichier contenant une image à
utiliser pour remplacer les documents interdits. Si le nom de l'image
est "default" (ou n'est pas spécifié), swiftsurf utilise un petit
carré vert comme image. Il est aussi possible de donner un nom de
couleur (white, blue, transparent, green, red, orange, black, yellow
ou gray). Si vous utilisez un document avec un type esotérique, il
peut etre utile de faire une association entre son association et son
type mime (avec l'option mimeType décrite ci-dessus).
- forbiddenUrl : debut d'une liste d'urls à 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 et est suivie du nom d'un fichier contenant une image
à utiliser pour remplacer les documents interdits (ou default ou une
couleur comme pour forbiddenFile).
- 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. Cette liste doit se terminer par end et est
suivie du nom d'un fichier contenant une image à utiliser pour
remplacer les documents interdits (ou default ou une couleur comme
pour forbiddenFile).
- allConnect : autorise les connections https sur tous les ports
(defaut : uniquement le port 443).
- noConnect : interdit https.
- methods : donne une liste (terminée par end) des méthodes
autorisées. Par défaut, cette liste est vide, ce qui autorise toutes
les méthodes (GET, POST, HEAD, PUT, DELETE...).
- 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é).
A faire
- Comprendre les requête FTP
- Ajouter un cache pour les pages html
- Faire du prefetching