Comment utiliser des caractères spéciaux dans le nom d'utilisateur / mot de passe pour le proxy HTTP?

26

J'essaie de configurer un proxy HTTP sur une machine Windows. Le problème est que le mot de passe contient un caractère spécial (@) qui entraîne l' setéchec de la commande.

J'ai essayé à la fois d'échapper le caractère ( \@) et de le coder en pourcentage avec la valeur hexadécimale ( %40), en vain.

Par exemple, avec le nom d'utilisateur Foo et le mot de passe B @ r, j'ai essayé les commandes suivantes:

set http_proxy=http://foo:B\@[email protected]:80
set http_proxy=http://foo:B%[email protected]:80

À part changer le mot de passe, comment puis-je demander au proxy d'utiliser le mot de passe?

pyropenguin
la source
L'ensemble échoue-t-il ou l'outil utilisant la variable d'environnement http_proxy échoue-t-il en raison du symbole @?
Mike Cornell
Oui. Comme le format est nom d'utilisateur: mot de passe @ serveur: port, avoir @ au milieu de votre mot de passe fait que le côté droit de votre mot de passe est considéré comme le nom d'hôte, donc la résolution du nom d'hôte ci-dessus échoue car il pense que le nom d'hôte est r @ http- gateway.domain.org. Le "r @" ne devrait pas être là.
Philluminati
2
J'ai essayé d'utiliser% 40 et cela a fonctionné (sous Windows), êtes-vous sûr?
thegreendroid
En fait, cela fonctionne à la fois sur Windows et Linux (Ubuntu).
thegreendroid

Réponses:

29

Vous devez encoder en pourcentage | encoder les caractères spéciaux. Par exemple, au lieu de cela:

http://foo:B@[email protected]:80

vous écrivez ceci:

http://foo:B%[email protected]:80

Est donc @remplacé par %40.

ravi parekh
la source
2
l'encodage est en effet le moyen de contourner ce problème (et bien d'autres).
HTDutchy
j'ai trouvé que je devais doubler l'urlencode de certains caractères
dovidweisz
1
Je suggère simplement d'utiliser javascript encodeURIComponent()à cette fin. Vous pouvez facilement utiliser votre navigateur DeveloperTools -> Console.
Mir-Ismaili
2

Utilisez le code% Ascii du caractère spécial en notation hexadécimale pour tout caractère spécial. Supposons que mon mot de passe soit AB @ 12 # et que le mot de passe soit défini comme

git config --global http.proxy *http://usernamne:**AB%4012%23%26**@myipadress:portnumber*

Reportez-vous au tableau ascii pour connaître le code ascii hexadécimal de n'importe quel nombre.

Sandeep Kumar
la source
-1

Sur la base de cette réponse sur SO , pouvez-vous essayer d'utiliser ^ pour échapper au symbole @?

Mike Cornell
la source
En réponse aux deux, l'ensemble réussit, c'est l'outil utilisant la variable d'environnement: set http_proxy=http://foo:B^@[email protected]:80 jruby -S gem install rakeERREUR: lors de l'exécution de gem ... (URI :: InvalidURIError) le schéma http n'accepte pas la partie registre: foo: B @ r @ http- gateway.domain.org:80 (ou mauvais nom d'hôte?)
pyropenguin
C'est une question basée sur Linux, pas une question basée sur Windows, l'utilisation de ^ ne fonctionne pas pour moi. Je reçois toujours wget: unable to resolve host address tf4ce @ server.company.com '' après avoir défini la variable d'environnement proxy.
Philluminati
2
En fait, c'est une question basée sur Windows ... Je connais personnellement pyropenguin.
Mike Cornell