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\@r@http-gateway.domain.org:80
set http_proxy=http://foo:B%40r@http-gateway.domain.org:80

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


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@r@http-gateway.domain.org:80

vous écrivez ceci:

http://foo:B%40r@http-gateway.domain.org:80

Est donc @remplacé par %40.


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.



-1

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


En réponse aux deux, l'ensemble réussit, c'est l'outil utilisant la variable d'environnement: set http_proxy=http://foo:B^@r@http-gateway.domain.org: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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.