Correction d'erreur · 2 min de lecture

HTTP 407 Authentification Proxy Requise : comment le corriger

Un 407 est le proxy — pas le site web — vous disant qu'il a besoin de credentials qu'il n'a pas obtenus. Ce guide explique exactement ce qui le déclenche et passe en revue les solutions pour curl, navigateurs, Python, Windows et proxies d'entreprise.

Que signifie réellement un 407

HTTP 407 Authentification Proxy Requise provient du proxy, et non du site de destination. C'est la façon dont le proxy dit "Je vais transmettre votre demande, mais d'abord prouvez qui vous êtes." C'est le jumeau de la couche proxy d'un 401 : la réponse contient un en-tête Proxy-Authenticate décrivant le schéma qu'il souhaite (généralement Basic), et votre client est censé renvoyer la demande avec un en-tête Proxy-Authorization. Si les identifiants sont manquants, malformés ou incorrects, vous obtenez un 407.

Avec des proxies authentifiés comme ceux de s4m — SOCKS5 sur 1080, HTTP sur 3128, tous deux utilisant USER:PASS — un 407 signifie presque toujours l'une des quatre choses suivantes : vous n'avez fourni aucun identifiant, vous avez fourni les mauvais, le mot de passe contient des caractères spéciaux qui ont cassé l'analyse de l'URL, ou l'outil que vous utilisez ne lit pas les identifiants à l'endroit où vous les avez mis (un classique avec Puppeteer et Scrapy). Les solutions ci-dessous sont classées de la plus courante à la moins courante. Consultez le guide d'authentification proxy et le aperçu du proxy pour plus de contexte.

Fournissez les identifiants correctement, par outil

Le même USER:PASS, à l'endroit où chaque outil le lit réellement. Remplacez par vos identifiants.

bash
# curl: inline in URL, or with -U (URL-encode special chars, e.g. @ -> %40)
curl -x http://USER:PASS@proxy.s4m.online:3128 https://api.ipify.org
curl -x proxy.s4m.online:3128 -U USER:PASS https://api.ipify.org

# wget: dedicated flags
wget -e https_proxy=proxy.s4m.online:3128 \
     --proxy-user=USER --proxy-password=PASS https://example.com

# Python requests: credentials belong in the proxy URL
#   proxies = {"http": "http://USER:PASS@proxy.s4m.online:3128",
#              "https": "http://USER:PASS@proxy.s4m.online:3128"}
#   requests.get(url, proxies=proxies)

# Environment variables (many tools read these):
export HTTPS_PROXY="http://USER:PASS@proxy.s4m.online:3128"

# Special characters? URL-encode the password:
#   pa@ss  ->  pa%40ss     (Python: urllib.parse.quote(pw, safe=''))

# Verify it worked: a 200 with an IP body means auth passed.
curl -o /dev/null -s -w "%{http_code}\n" \
     -x http://USER:PASS@proxy.s4m.online:3128 https://api.ipify.org

Corrigez un 407, étape par étape

Travaillez sur cette liste ; la plupart des 407 sont résolus par l'étape 3.

Confirmer que le proxy nécessite une authentification

Les proxies s4m nécessitent USER:PASS. Un 407 signifie que le proxy n'a pas de credentials valides — donc la question est seulement de savoir où les vôtres se trompent, pas si l'authentification est nécessaire.

Vérifiez que les identifiants sont exactement corrects

Recopiez USER et PASS depuis votre tableau de bord. Un espace à la fin, un mauvais caractère ou un identifiant expiré produisent tous un 407. Testez-les d'abord dans une commande curl -x unique.

Encoder en URL les caractères spéciaux

Si le mot de passe contient @, :, /, # ou similaire, encodez-les (@ devient %40). Non encodés, ils cassent l'URL du proxy, donc le client envoie des identifiants incorrects ou partiels.

Mettez les identifiants là où l'outil peut les lire

Certains outils ignorent les identifiants d'URL : Puppeteer a besoin de page.authenticate(), Scrapy a besoin d'un en-tête Proxy-Authorization. Faites correspondre la méthode à l'outil, pas seulement au proxy.

Navigateurs, Windows et proxies d'entreprise

Dans un navigateur, un 407 apparaît généralement comme une fenêtre contextuelle de connexion du proxy ; entrer le bon nom d'utilisateur et le bon mot de passe le supprime. Lors de l'automatisation d'un navigateur, cette fenêtre contextuelle est tout le problème — Chromium sans tête ne peut pas y répondre, c'est pourquoi Puppeteer utilise page.authenticate(), Playwright prend les identifiants dans son objet proxy, et Selenium a besoin d'une petite extension. Sur Windows, vérifiez le proxy système sous Paramètres et tout proxy par application, car un identifiant enregistré obsolète peut déclencher des 407 dans les outils qui héritent du proxy système.

Les proxies d'entreprise ajoutent une complication : certains utilisent NTLM ou Kerberos au lieu de l'authentification de base, donc un simple USER:PASS n'est pas suffisant et vous avez besoin de l'option NTLM de l'outil. s4m lui-même utilise l'authentification de base standard USER:PASS, donc vous n'aurez pas besoin de NTLM avec nos points de terminaison. Si les identifiants sont définitivement corrects et que vous voyez toujours 407, confirmez que vous atteignez le bon port (1080 SOCKS5, 3128 HTTP) et validez le point de terminaison avec les outils. Une erreur Chrome connexe est couverte dans le guide ERR_PROXY_CONNECTION_FAILED.

FAQ

Questions, réponses

Une erreur 407 est-elle de la faute du site web ou du proxy ?

Le proxy. HTTP 407 Proxy Authentication Required est renvoyé par le proxy, pas par le site de destination, vous indiquant qu'il a besoin de credentials valides avant de transmettre votre demande. Le site web n'est jamais atteint tant que vous ne vous authentifiez pas.

Pourquoi est-ce que je reçois un 407 même avec le bon mot de passe ?

Le plus souvent, le mot de passe contient des caractères spéciaux qui cassent l'URL du proxy, donc le client envoie la mauvaise valeur. Encodez-les en URL (par exemple, @ devient %40). Confirmez également que l'outil lit les identifiants à partir de l'endroit où vous les avez placés.

Comment résoudre l'erreur 407 dans Puppeteer, Playwright ou Selenium ?

Les navigateurs ignorent les identifiants dans le drapeau proxy. Utilisez page.authenticate() dans Puppeteer, les champs nom d'utilisateur/mot de passe de l'objet proxy dans Playwright, et une petite extension d'identifiants dans Selenium.

S4m utilise-t-il l'authentification proxy NTLM ?

Non. s4m utilise l'authentification de base standard USER:PASS sur les ports 1080 (SOCKS5) et 3128 (HTTP). NTLM ne s'applique qu'à certains proxies d'entreprise, pas à nos points de terminaison.

Proxies avec authentification simple

Les proxies s4m utilisent USER:PASS en clair sur proxy.s4m.online — pas de NTLM, pas de surprises. SOCKS5 et HTTP de datacenter avec facturation, avec une option d'IP dédiée pour un accès autorisé.

Les gens ont trouvé cette page en recherchant

Vraies phrases de recherche auxquelles cette page répond — les liens ouvrent la page qui les couvre en profondeur.