¿Cómo usar caracteres especiales en nombre de usuario / contraseña para proxy HTTP?

26

Estoy tratando de configurar un proxy HTTP en una máquina con Windows. El problema es que la contraseña tiene un carácter especial (@) que hace que setfalle el comando.

He intentado escapar del carácter ( \@) y codificarlo con el valor hexadecimal ( %40), sin éxito.

Por ejemplo, con el nombre de usuario Foo y la contraseña B @ r, probé los siguientes comandos:

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

Además de cambiar la contraseña, ¿cómo puedo hacer que el proxy use la contraseña?

piropenguina
fuente
¿El conjunto falla o la herramienta utiliza la variable de entorno http_proxy debido al símbolo @?
Mike Cornell
Si. Debido a que el formato es username: password @ server: port, tener @ en el medio de su contraseña hace que el lado derecho de su contraseña se considere el nombre de host, por lo que la resolución del nombre de host anterior falla porque cree que el nombre de host es r @ http- gateway.domain.org. La "r @" no debería estar allí.
Philluminati
2
Intenté usar% 40 y funcionó (en Windows), ¿estás seguro?
thegreendroid
De hecho, funciona tanto en Windows como en Linux (Ubuntu).
thegreendroid

Respuestas:

29

Tienes que codificar por ciento | codificar los caracteres especiales. Por ejemplo, en lugar de esto:

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

tu escribes esto:

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

Entonces @se reemplaza con %40.

ravi parekh
fuente
2
La codificación es, de hecho, la forma de solucionar este problema (y muchos otros).
HTDutchy
descubrí que necesitaba duplicar urlencode algunos caracteres
dovidweisz
1
Sugiero simplemente usar javascript encodeURIComponent()para este propósito. Puede usar fácilmente su navegador DeveloperTools -> Console.
Mir-Ismaili
2

Use el código% Ascii del carácter especial en notación hexadecimal para cualquier carácter especial. Supongamos que mi contraseña es AB @ 12 # y luego la contraseña debe establecerse como

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

Consulte la tabla ascii para conocer el código ascii hexadecimal de cualquier número.

Sandeep Kumar
fuente
-1

Basado en esta respuesta en SO , ¿puedes intentar usar ^ para escapar del símbolo @?

Mike Cornell
fuente
En respuesta a ambos, el conjunto es exitoso, es la herramienta que usa la variable de entorno: set http_proxy=http://foo:B^@[email protected]:80 jruby -S gem install rakeERROR: Al ejecutar gem ... (URI :: InvalidURIError) el esquema http no acepta parte del registro: foo: B @ r @ http- gateway.domain.org:80 (¿o mal nombre de host?)
pyropenguin el
Esta es una pregunta basada en Linux, no una pregunta basada en Windows, usar ^ no funciona para mí. Todavía obtengo wget: unable to resolve host address tf4ce @ server.company.com '' después de configurar la variable de entorno proxy.
Philluminati
2
En realidad, es una pregunta basada en Windows ... Conozco pyropenguin personalmente.
Mike Cornell el