Guide du configurateur SOCKS5 : navigateurs, SSH, curl, git et Python
Un guide pratique de configuration SOCKS5 pour Firefox, macOS, Linux, le transfert dynamique SSH, curl, git et Python — y compris la distinction entre socks5 et socks5h qui cause la plupart des fuites de géolocalisation et DNS.
Rechercher un configurateur SOCKS5 signifie généralement que vous disposez déjà d'un hôte, d'un port et éventuellement d'un nom d'utilisateur et d'un mot de passe — et que vous souhaitez qu'un navigateur, un shell ou un script achemine le trafic à travers celui-ci. Il n'existe pas de configurateur universel unique, mais chaque endroit où vous configurez SOCKS5 a besoin des mêmes quelques valeurs, et les bizarreries sont prévisibles. Ce guide couvre les configurations que les gens utilisent réellement.
Qu'est-ce que SOCKS5, en environ 60 secondes
SOCKS5 (RFC 1928) est un protocole proxy de la couche transport. Votre client ouvre une connexion au proxy, lui demande d'atteindre une destination, puis relaie les octets dans les deux sens. Deux conséquences découlent de cette conception :
- Le proxy n'analyse ni ne réécrit les protocoles applicatifs, il transporte donc HTTPS, SSH et tout trafic TCP arbitraire sans configuration spéciale.
- SOCKS5 ne chiffre rien. La confidentialité provient du protocole de destination (HTTPS, SSH) ou de l'exécution du tunnel sur un transport chiffré tel que SSH.
L'authentification par nom d'utilisateur et mot de passe pour SOCKS5 est une spécification distincte, la RFC 1929. La prise en charge par les clients varie, et cette variation cause une grande partie des problèmes de configuration.
Les valeurs dont vous avez besoin avant de commencer
- Hôte — le nom d'hôte ou l'adresse IP du proxy.
- Port — le port d'écoute fourni par le fournisseur ou le tunnel.
- Authentification — un nom d'utilisateur et un mot de passe, une liste blanche d'IP, ou aucune.
- Schéma — si votre outil attend
socks5://ousocks5h://.
socks5:// vs socks5h:// et pourquoi le DNS détermine votre géolocalisation
| Schéma | Qui résout le DNS | Chiffre le trafic | Utiliser quand |
|---|---|---|---|
socks5:// |
votre machine | non | la résolution DNS locale est acceptable |
socks5h:// |
le proxy | non | vous voulez que les recherches et la géolocalisation correspondent au proxy |
préfixe http:// |
votre machine | non | vous utilisez un proxy HTTP, pas SOCKS |
préfixe https:// |
votre machine | TLS vers le proxy | le fournisseur propose un point de terminaison proxy encapsulé en TLS |
Le h signifie que le nom d'hôte est résolu par le proxy. Utiliser socks5:// alors que vous vouliez socks5h:// est la cause la plus courante d'un proxy qui fonctionne mais affiche toujours la mauvaise région, et cela peut aussi exposer les noms d'hôtes que vous visitez à votre résolveur local. Seuls certains outils — curl, git via libcurl et certaines bibliothèques Python — respectent la convention socks5h ; les applications GUI l'exposent généralement sous forme de case à cocher.
Configurer SOCKS5 dans Firefox
Firefox est le navigateur grand public le plus simple à pointer vers un proxy SOCKS5 car il conserve ses propres paramètres de proxy au lieu d'hériter de ceux du système d'exploitation.
- Ouvrez les Paramètres et recherchez Paramètres réseau, ou naviguez vers Paramètres, puis Général, puis Paramètres réseau.
- Choisissez Configuration manuelle du proxy.
- Entrez l'hôte et le port dans le champ Hôte SOCKS et sélectionnez SOCKS v5.
- Cochez Proxy DNS lors de l'utilisation de SOCKS v5 si le proxy doit résoudre les noms d'hôtes.
- Laissez les champs de proxy HTTP vides sauf si vous avez également un proxy HTTP.
- Cliquez sur OK, puis chargez une page qui indique votre adresse IP pour confirmer le changement.
Chrome, Edge et autres navigateurs Chromium
Les navigateurs basés sur Chromium lisent les paramètres de proxy du système d'exploitation. Pour un test isolé, lancez-en un avec un drapeau et un profil jetable :
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--proxy-server="socks5://127.0.0.1:1080" \
--user-data-dir=/tmp/chrome-socks-test
# Linux
google-chrome --proxy-server="socks5://127.0.0.1:1080" --user-data-dir=/tmp/chrome-socks-test
Deux mises en garde. Le --user-data-dir séparé maintient le test isolé de votre profil normal, et le drapeau n'est pas un endroit fiable pour les informations d'identification — si votre proxy nécessite une authentification, configurez-la dans les paramètres du système d'exploitation ou passez par un redirecteur local au lieu d'intégrer un nom d'utilisateur et un mot de passe dans le drapeau.
macOS : configurer SOCKS5 depuis le terminal
L'utilitaire networksetup écrit exactement le même paramètre que celui exposé par le panneau des préférences Réseau.
# Lister les services réseau disponibles si vous n'êtes pas sûr du nom
networksetup -listallnetworkservices
# Remplacez « Wi-Fi » par le nom de votre service actif
sudo networksetup -setsocksfirewallproxy "Wi-Fi" 127.0.0.1 1080
sudo networksetup -setsocksfirewallproxystate "Wi-Fi" on
# Le désactiver à nouveau
sudo networksetup -setsocksfirewallproxystate "Wi-Fi" off
De nombreux outils en ligne de commande ignorent complètement les paramètres de proxy du système macOS et nécessitent leur propre configuration, donc ne supposez pas que le terminal est couvert une fois cette commande réussie.
Linux et outils CLI : variables d'environnement
export ALL_PROXY="socks5h://user:[email protected]:1080"
export all_proxy="$ALL_PROXY"
Un grand nombre d'outils en ligne de commande lisent ALL_PROXY ou sa variante en minuscules. Vérifiez ce qui est actuellement défini avec env | grep -i proxy. Les applications graphiques sous Linux suivent généralement les paramètres de proxy de l'environnement de bureau plutôt que ces variables, donc configurez les deux chemins ou utilisez un wrapper comme proxychains pour les binaires récalcitrants.
SSH : transformer un serveur que vous contrôlez en proxy SOCKS5
# -D active le transfert dynamique (SOCKS), -N n'exécute aucune commande distante, -C compresse
ssh -N -C -D 1080 [email protected]
# Ajoutez -f pour le mettre en arrière-plan
ssh -f -N -C -D 1080 [email protected]
C'est souvent le moyen le plus rapide d'obtenir un point de terminaison SOCKS5 fonctionnel. Rien n'a besoin d'être installé sur le serveur distant, aucun privilège élevé n'est requis, et le saut entre votre machine et le serveur est chiffré par SSH — ce qui répond à l'une des faiblesses de SOCKS5. Pointez votre navigateur ou CLI vers 127.0.0.1:1080 une fois le tunnel établi.
curl, git et Python
# Résoudre le DNS localement
curl --socks5 127.0.0.1:1080 https://api.ipify.org
# Résoudre le DNS au niveau du proxy
curl --socks5-hostname 127.0.0.1:1080 https://api.ipify.org
# Avec authentification par nom d'utilisateur et mot de passe
curl --socks5-hostname 127.0.0.1:1080 \
--proxy-user "USER:PASS" \
https://api.ipify.org
# Router git à travers un proxy SOCKS5 ; git utilise libcurl en dessous
git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080
# Annuler lorsque vous avez terminé
git config --global --unset http.proxy
git config --global --unset https.proxy
# Nécessite : pip install "requests[socks]"
import requests
proxies = {
"http": "socks5h://user:[email protected]:1080",
"https": "socks5h://user:[email protected]:1080",
}
response = requests.get("https://api.ipify.org", proxies=proxies, timeout=15)
print(response.status_code, response.text)
La bibliothèque requests a besoin de la dépendance PySocks avant de comprendre les proxys SOCKS. Sans elle, vous obtenez une erreur de dépendances manquantes déclenchée avant toute tentative de connexion, ce qui est facile à confondre avec un échec du proxy.
Dépanner les échecs que vous rencontrerez réellement
| Symptôme | Cause probable | Solution |
|---|---|---|
| Connexion refusée | Rien n'écoute sur ce port | Confirmez le port et que le proxy ou le tunnel SSH est en cours d'exécution |
| Échec de l'authentification SOCKS5 | Identifiants incorrects, ou le proxy attend une IP autorisée | Revérifiez les identifiants ; supprimez-les si vous êtes sur liste blanche |
| Le site affiche toujours la mauvaise région | DNS résolu localement car vous avez utilisé socks5:// |
Passez à socks5h:// ou activez le DNS distant |
| 407 Proxy Authentication Required | Vous êtes pointé vers un port proxy HTTP, pas SOCKS | Vérifiez la liste des ports du fournisseur |
| Fonctionne dans curl, échoue dans le navigateur | Le navigateur utilise les paramètres système, ou une extension les remplace | Désactivez les extensions de proxy et vérifiez les paramètres système |
| Les applications UDP échouent | L'association UDP de SOCKS5 est rarement implémentée côté client | Utilisez un VPN pour le trafic UDP à la place |
Vérifier avant de faire confiance
# Comparez l'IP signalée avec et sans le proxy
curl -sS https://api.ipify.org; echo
curl -sS --socks5-hostname 127.0.0.1:1080 https://api.ipify.org; echo
Si les deux adresses sont identiques, le trafic ne passe pas par le proxy. Lorsque la précision géographique compte, exécutez également un test de fuite DNS dans le navigateur pour confirmer que les recherches sortent via le proxy plutôt que par votre résolveur local.
À retenir
Un configurateur SOCKS5 n'est en réalité que quatre valeurs appliquées au bon endroit : hôte, port, identifiants et une décision sur l'endroit où le DNS est résolu. Configurez le navigateur ou l'outil CLI que vous utilisez réellement, confirmez l'IP de sortie avec la comparaison curl ci-dessus, et utilisez par défaut socks5h:// chaque fois que la précision géographique ou la confidentialité DNS compte.