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.