Les quatre protocoles étiquetés « proxy » partagent peu de choses au-delà du nom. Les proxies HTTP analysent la couche 7 et réécrivent les en-têtes ; les proxies SOCKS ne lisent pas du tout votre trafic. Cette distinction détermine quel proxy convient à la navigation, au scraping et au tunnellisation brute.
Proxy HTTP
Un proxy HTTP attend une sémantique HTTP. Il ouvre la requête, lit l'URL, peut ajouter des en-têtes comme Via ou X-Forwarded-For, et refuse tout ce qui n'est pas une requête HTTP valide. Les navigateurs, curl et la plupart des bibliothèques de scraping utilisent par défaut des proxies HTTP car la configuration est essentiellement gratuite — définir une seule variable d'environnement ou passer un indicateur.
Le prix de cette simplicité est la visibilité. Le proxy voit l'URL complète, y compris le chemin et la chaîne de requête, et en HTTP en clair, il voit aussi le corps. Les proxies de cache peuvent réécrire les réponses ; les proxies transparents peuvent supprimer les cookies. Traitez tout proxy HTTP comme un intermédiaire disposant de tous les privilèges et n'envoyez jamais d'identifiants en clair.
Proxy HTTPS et la méthode CONNECT
« Proxy HTTPS » est une étiquette légèrement trompeuse. Il s'agit d'un proxy HTTP qui implémente en plus la méthode CONNECT. CONNECT demande au proxy d'ouvrir un tunnel TCP brut vers un hôte cible et de transférer les octets dans les deux sens ; le client et la destination négocient ensuite TLS comme si le proxy n'était pas là. Le proxy voit l'hôte et le port de destination, ainsi que le volume d'octets, mais pas la charge utile.
Un proxy « supportant HTTPS » est donc un proxy qui supporte le tunnellisation TLS, et non un proxy qui fonctionne lui-même sur TLS. La liaison entre votre machine et le proxy peut être en clair ou chiffrée indépendamment. Si vous tenez à ce que cette liaison soit protégée, utilisez une implémentation SOCKS5 sur TLS ou un proxy commercial payant qui publie son point de terminaison TLS.
SOCKS4
SOCKS4 est le minimum de 1994 : TCP uniquement, IPv4 uniquement, pas d'UDP, pas d'IPv6, pas d'authentification, pas de résolution de nom d'hôte au niveau du proxy. La poignée de main fait six octets plus un code de réponse d'un octet. Il survit dans la nature car le protocole est si petit que presque tout outil compatible TCP peut l'implémenter correctement. Si une liste annonce SOCKS4, attendez-vous à un transfert TCP brut vers une adresse IPv4 — et rien d'autre.
SOCKS5
SOCKS5, défini dans la RFC 1928 (1996), est la version que la plupart des outils modernes utilisent. Il ajoute le transfert UDP, les adresses IPv6, l'authentification GSSAPI et la possibilité de résoudre les noms d'hôte au niveau du proxy plutôt que du client. Parce que SOCKS5 ne fait aucune hypothèse sur la couche applicative qui le surmonte, c'est le choix le plus flexible pour les charges de travail non HTTP : SSH, IRC, BitTorrent, RPC personnalisé.
Performances et surcharge
Les proxies SOCKS ont une surcharge par requête plus faible car ils n'analysent rien. Les proxies HTTP et HTTPS paient pour une analyse complète de la requête sur chaque connexion. Pour une seule session TLS longue durée à l'intérieur de CONNECT, la différence est négligeable. Pour des milliers de requêtes courtes où le proxy ouvre une nouvelle connexion à chaque fois, SOCKS5 gagne de manière mesurable — généralement 2 à 5 ms par requête pour le chemin d'analyse.
Anonymat, en pratique
Un proxy HTTP qui ne supprime pas vos en-têtes peut divulguer votre IP client via Via, X-Forwarded-For ou Forwarded. Les proxies SOCKS n'ont pas de tels en-têtes car ils n'ont pas de concept d'en-têtes. Ce n'est pas tant une fonctionnalité d'anonymat que l'absence d'une surface de fuite. À l'intérieur de HTTPS tunnelé via CONNECT, la destination ne voit que la poignée de main TLS, donc toute fuite au niveau HTTP au niveau du proxy est sans objet.
Conventions de ports
Vous verrez ceci dans ce répertoire : 80, 8080, 3128, 8888 pour HTTP ; 443 pour les points de terminaison qui supportent explicitement CONNECT ; 1080 pour SOCKS. De nombreux fournisseurs exposent des ports élevés non standard (au-dessus de 10 000) pour échapper au balayage de ports occasionnel. Le numéro de port n'indique rien sur la qualité — il signale seulement ce que l'opérateur a choisi d'exposer.