Socks5Proxy

Utilisation des proxies avec cURL : vérifier les proxies HTTP et SOCKS5 en ligne de commande

Ce guide explique comment connecter les proxies HTTP et SOCKS5 de Socks5Proxy avec cURL, l'authentification par identifiant/mot de passe, mesurer les temps de réponse, et un script shell pour vérifier toute la liste en une fois.

Pourquoi tester un proxy avec cURL est-il utile ?

cURL est présent sur presque tous les serveurs et environnements de développement, ce qui en fait l'outil le plus rapide pour vérifier le bon fonctionnement d'un proxy. En cas de problème dans le code ou les paramètres navigateur, un test cURL permet d'isoler rapidement l'origine (proxy ou code).

L'exemple utilise l'IP 198.51.100.23, port HTTP 8000, port SOCKS5 1080, identifiant spx_user et mot de passe spx_pass.

Comment se connecter à un proxy HTTP ?

Utilisez l'option -x (ou --proxy) pour spécifier l'adresse du proxy. Le nom d'utilisateur et le mot de passe peuvent être inclus dans l'adresse ou spécifiés séparément avec -U. Pour les requêtes HTTPS, cURL crée un tunnel CONNECT et envoie la requête chiffrée à l'intérieur.

# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org

# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.org

Comment se connecter à un proxy SOCKS5 ?

--socks5-hostname effectue la résolution DNS côté proxy. Les requêtes DNS de votre serveur ne sont pas exposées, et les noms sont résolus selon le pays du proxy. --socks5 résout les noms sur votre serveur avant d'envoyer uniquement l'IP au proxy. Nous recommandons --socks5-hostname dans la plupart des cas.

Le format socks5h:// fonctionne aussi avec l'option -x.

# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org

# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.org

Comment voir à la fois le temps de réponse et le statut ?

L'option -w permet d'afficher sur une ligne le temps de connexion, le temps jusqu'au premier octet, le temps total et le code de réponse. Utile pour comparer la vitesse des proxies dans différents pays ou déterminer si un site cible ou un proxy est lent.

Utilisez -o /dev/null pour ignorer le corps et -s pour désactiver la progression, afin d'afficher uniquement les résultats de manière claire.

curl -s -o /dev/null \
  -x http://spx_user:spx_pass@198.51.100.23:8000 \
  -w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

Comment vérifier toute la liste en une seule fois ?

Pour vérifier l'état de tous les proxies en une fois, vous pouvez obtenir une liste via l'API et exécuter cURL sur chaque ligne. Le script ci-dessous reçoit une liste au format ip:port:user:pass et affiche l'IP de réponse et le temps pris pour chaque ligne. Un délai d'attente évite que le script ne se bloque sur les lignes sans réponse.

#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
  "https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt

while IFS=: read -r ip port user pass; do
  out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
  echo "$ip:$port $out"
done < proxies.txt

Peut-on appeler l'API directement avec cURL ?

Oui. Vous pouvez vérifier le solde, la liste des plans actifs et la liste des proxies avec un seul en-tête Authorization: Bearer. Les réponses JSON peuvent être filtrées avec des outils comme jq pour afficher uniquement les colonnes nécessaires.

curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"

Peut-on configurer le proxy via des variables d'environnement ?

Oui. cURL et de nombreux outils en ligne de commande lisent les variables d'environnement http_proxy, https_proxy et all_proxy. En les définissant une fois dans le shell, tous les outils comme cURL, wget et pip utiliseront le même proxy. Pour SOCKS5, utilisez socks5h:// dans all_proxy.

Listez les adresses à exclure du proxy dans no_proxy, séparées par des virgules. Cela évite de router inutilement les serveurs internes ou localhost via le proxy.

export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org

# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"

Comment comparer les résultats d'un proxy HTTP et d'un proxy SOCKS5 ?

En envoyant une requête à la même adresse via les deux ports de la même IP et en comparant l'IP de réponse et le temps, vous pouvez voir quelle méthode est la plus rapide dans votre environnement. La plupart du temps, c'est similaire, mais il peut y avoir des différences si le serveur cible est loin ou si la résolution DNS est lente.

L'IP de réponse doit être la même pour les deux méthodes. Si elle diffère, vérifiez que vous n'avez pas mélangé les ports d'autres lignes.

for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
  curl -s -m 15 -x "$p" -w "  %{time_total}s\n" https://api.ipify.org
done

Comment le serveur vérifie-t-il les IP pour l'autorisation par IP ?

La valeur à enregistrer pour l'autorisation IP est l'IPv4 public utilisé par votre serveur pour accéder à Internet. Vous pouvez vérifier cette valeur en exécutant curl -4 https://api.ipify.org sans proxy. Enregistrez cette valeur dans le champ d'autorisation IP du tableau de bord pour permettre les connexions sans nom d'utilisateur ni mot de passe depuis ce serveur.

curl -4 -s https://api.ipify.org

Un proxy peut-il voir le contenu des sites HTTPS ?

Lorsque vous faites une requête HTTPS via un proxy HTTP, cURL établit d'abord un tunnel CONNECT vers le serveur de destination, puis établit une connexion chiffrée directement avec ce serveur. Le proxy sait uniquement à quel serveur se connecter, mais ne peut pas voir le contenu chiffré. L'option -v montre les étapes CONNECT et la connexion chiffrée qui suit.

Idem pour SOCKS5 : le proxy relaye la connexion, le chiffrement se fait entre cURL et le serveur cible. Désactivez l'option -k (vérification des certificats) pour plus de sécurité - les certificats sont validés normalement via le proxy.

Avec --socks5-hostname, le proxy résout également le nom de domaine auquel vous vous connectez, donc aucune trace de requête DNS ne reste sur votre serveur.

curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"

Comment interpréter les messages d'erreur de cURL ?

Le code HTTP 407 reçu du proxy après CONNECT indique un échec d'authentification. Vérifiez le nom d'utilisateur et le mot de passe, ou l'IP du serveur enregistrée pour l'autorisation IP. Si le mot de passe contient @ ou :, ne l'incluez pas dans l'adresse, utilisez plutôt -U ou --proxy-user.

Failed to connect ou Connection timed out indiquent un port incorrect ou un pare-feu bloquant les connexions sortantes. Utilisez le port HTTP pour les adresses HTTP, le port SOCKS5 pour SOCKS5, et assurez-vous que les ports sortants sont ouverts. L'option -v affiche le processus de connexion étape par étape pour faciliter le diagnostic.

Utilisation des proxies avec cURL : vérification des connexions -x et SOCKS5 | Socks5Proxy