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

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


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

tu escribes esto:

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

Entonces @se reemplaza con %40.


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.



-1

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


En respuesta a ambos, el conjunto es exitoso, es la herramienta que usa la variable de entorno: set http_proxy=http://foo:B^@r@http-gateway.domain.org: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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.