Como usar caracteres especiais no nome de usuário / senha para o proxy HTTP?

26

Estou tentando configurar um proxy HTTP em uma máquina Windows. O problema é que a senha possui um caractere especial (@) que está causando setfalha no comando.

Eu tentei escapar do caractere ( \@) e codificá-lo por cento com o valor hexadecimal ( %40), sem sucesso.

Por exemplo, com o nome de usuário Foo e a senha B @ r, tentei os seguintes comandos:

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

Além de alterar a senha, como posso fazer com que o proxy use a senha?

piropenguim
fonte
O conjunto está falhando ou a ferramenta que está usando a variável de ambiente http_proxy está falhando devido ao símbolo @?
Mike Cornell
Sim. Como o formato é nome de usuário: senha @ servidor: porta, ter @ no meio da sua senha faz com que o lado direito da sua senha seja considerado o nome do host, portanto, a resolução do nome do host acima falha porque acha que o nome do host é r @ http- gateway.domain.org. O "r @" não deve estar lá.
Philluminati
2
Eu tentei usar% 40 e funcionou (no Windows), você tem certeza?
precisa
De fato, ele funciona tanto no Windows quanto no Linux (Ubuntu).
thegreendroid

Respostas:

29

Você precisa codificar por cento | codifique os caracteres especiais. Por exemplo, em vez disso:

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

você escreve isto:

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

Então @é substituído por %40.

ravi parekh
fonte
2
codificação é realmente a maneira de contornar esse problema (e muitos outros).
precisa saber é o seguinte
Achei que eu precisava dupla urlencode alguns personagens
dovidweisz
1
Sugiro simplesmente o uso de javascript encodeURIComponent()para esse fim. Você pode usar facilmente o seu navegador DeveloperTools -> Console.
Mir-Ismaili
2

Use o código% Ascii do caractere especial na notação hexadecimal para qualquer caractere especial. Suponha que minha senha seja AB @ 12 # e, em seguida, a senha deve ser definida como

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

Consulte a tabela ascii para saber o código hexadecimal ascii de qualquer número.

Sandeep Kumar
fonte
-1

Com base nesta resposta no SO , você pode tentar usar ^ para escapar do símbolo @?

Mike Cornell
fonte
Em resposta a ambos, o conjunto é bem-sucedido, é a ferramenta que utiliza a variável de ambiente: set http_proxy=http://foo:B^@[email protected]:80 jruby -S gem install rakeERRO: Ao executar o gem ... (URI :: InvalidURIError), o esquema http não aceita a parte do registro: foo: B @ r @ http- gateway.domain.org:80 (ou mau hostname?)
pyropenguin
Esta é uma pergunta baseada no Linux, não no Windows, usando ^ não funciona para mim. Ainda recebo wget: unable to resolve host address tf4ce @ server.company.com '' depois de definir a variável de ambiente proxy.
Philluminati 3/11
2
Na verdade, é uma pergunta baseada no Windows ... Eu sei o pyropenguin pessoalmente.
Mike Cornell