Derniere mise a jour : 9 fevrier 2026

Proxy HTTP

2024 Reseau C

Presentation

Objectif principal : Un proxy HTTP qui se met entre le navigateur et le web. Il recoit les requetes, les forward au serveur, et renvoie les reponses. Avec cache et filtrage d'URLs en bonus.

Technologies utilisees : C avec sockets. Le proxy agit comme serveur (pour le navigateur) et client (vers les sites). Multi-threads pour gerer plusieurs connexions.

Fonctionnalites cles : Forward des requetes HTTP, cache des pages statiques, blacklist d'URLs (pour le controle parental ou bloquer des pubs), logs de toutes les requetes.

Livrables attendus : Un proxy configurable avec un fichier de blacklist. Cache sur disque. Logs avec timestamp et URL.

Calendrier previsionnel : Deux semaines. Le plus dur c'est de gerer correctement les headers HTTP pour savoir quand la reponse est complete.

Parties prenantes & criteres de succes : TP de reseaux. Le but c'etait de comprendre HTTP en profondeur et le role des proxies.

Le Defi

Savoir quand la reponse est complete. Y'a Content-Length parfois, des fois c'est chunked encoding, des fois le serveur ferme la connexion. Faut gerer tous ces cas pour pas couper la reponse au milieu.

La Solution

Je parse les headers de la reponse pour trouver Content-Length ou Transfer-Encoding. Si Content-Length, je lis exactement ce nombre de bytes. Si chunked, je decode les chunks. Sinon j'attends que le serveur ferme la connexion.

Architecture Technique

Thread principal qui accept les connexions. Chaque client est gere dans un thread separe. Module cache.c qui hash l'URL et stocke la reponse sur disque. Module filter.c qui check la blacklist. Module http.c pour parser les headers.

Points Cles

  • Cache HTTP sur disque
  • Filtrage par blacklist
  • Multi-threads pour la concurrence

Apercu

Resultats & Apprentissages

Le proxy marche bien pour HTTP (pas HTTPS, faudrait gerer CONNECT). Le cache accelere vraiment la navigation. J'ai compris en profondeur le protocole HTTP et les subtilites des headers.

Evolutions Futures

Support HTTPS avec CONNECT tunneling. Interface web pour voir les stats et gerer la blacklist. Compression des reponses. Authentification pour controler qui peut utiliser le proxy.

Retour aux projets Me contacter