Skip to content
Intermediate / 3 min read

Comment router les outils CLI Linux via les proxys SOCKS5 de ProxyScrape

Faites passer curl, wget, git, proxychains et Python par les points de terminaison HTTP et SOCKS5 de ProxyScrape sous Linux, avec une gestion sécurisée des identifiants et une configuration SOCKS5h sans fuite DNS.

Linux SOCKS5 Scraping Web

Aperçu

Sous Linux, la plupart des outils ne lisent pas un unique paramètre proxy global — chaque programme consulte son propre fichier de configuration ou les variables d'environnement http_proxy, https_proxy et all_proxy. ProxyScrape prend en charge HTTP et SOCKS5, et ce guide montre comment diriger les outils en ligne de commande courants vers votre point de terminaison.

Préférez SOCKS5 avec le schéma socks5h lorsque vous voulez que les résolutions DNS se fassent au niveau du proxy plutôt que localement. Cela évite les fuites DNS et prévient les échecs lorsqu'une cible utilise des noms que votre résolveur local ne peut pas voir.

Étapes

  1. Récupérez le point de terminaison. Dans le tableau de bord ProxyScrape, notez l'hôte, le port HTTP, le port SOCKS5, ainsi que votre nom d'utilisateur et votre mot de passe.

  2. Exportez les identifiants pour votre session shell. Évitez de saisir les mots de passe directement dans les commandes, où ils finissent dans l'historique du shell :

    read -rsp "ProxyScrape username: " PS_USER && echo
    read -rsp "ProxyScrape password: " PS_PASS && echo
    export PS_HOST="your-host"
    export PS_HTTP_PORT="your-http-port"
    export PS_SOCKS_PORT="your-socks5-port"
    
  3. Testez le proxy HTTP avec curl.

    curl -x "http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT" https://ipinfo.io/ip
    
  4. Testez SOCKS5. --socks5-hostname résout le DNS via le proxy. L'authentification par nom d'utilisateur/mot de passe SOCKS5 nécessite curl 7.51.0 ou une version plus récente :

    curl --socks5-hostname "$PS_HOST:$PS_SOCKS_PORT" -U "$PS_USER:$PS_PASS" https://ipinfo.io/ip
    
  5. Définissez les variables d'environnement pour les outils qui les respectent.

    export http_proxy="http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT"
    export https_proxy="$http_proxy"
    export no_proxy="localhost,127.0.0.1,.local"
    

    Pour SOCKS5, utilisez export all_proxy="socks5h://$PS_USER:$PS_PASS@$PS_HOST:$PS_SOCKS_PORT". Tous les programmes ne prennent pas en charge all_proxy ; vérifiez avec curl -v ou la documentation de l'outil concerné.

  6. Configurez wget. wget ne prend pas en charge les proxys SOCKS, utilisez donc le port HTTP dans ~/.wgetrc :

    use_proxy = yes
    http_proxy = http://USER:PASS@HOST:PORT
    https_proxy = http://USER:PASS@HOST:PORT
    

    Restreignez ensuite l'accès avec chmod 600 ~/.wgetrc.

  7. Routez des binaires arbitraires avec proxychains-ng. Installez proxychains-ng et ajoutez votre point de terminaison à proxychains.conf :

    socks5 HOST PORT USER PASS
    

    proxychains-ng accepte des champs nom d'utilisateur et mot de passe facultatifs après le port ; si votre version les rejette, consultez la documentation de votre distribution pour cette version. Ensuite, préfixez n'importe quelle commande :

    proxychains4 curl https://ipinfo.io/ip
    
  8. Utilisez-le depuis Python.

    import os, requests
    url = f"http://{os.environ['PS_USER']}:{os.environ['PS_PASS']}@{os.environ['PS_HOST']}:{os.environ['PS_HTTP_PORT']}"
    proxies = {"http": url, "https": url}
    print(requests.get("https://ipinfo.io/ip", proxies=proxies, timeout=15).text)
    

    Installez requests[socks] si vous préférez le port SOCKS5.

  9. Gardez les secrets hors des fichiers en clair. Préférez les variables d'environnement ou ~/.netrc avec chmod 600, et rappelez-vous que les identifiants transmis directement sur une ligne de commande peuvent être visibles par d'autres utilisateurs via ps aux.