Wie verwende ich Sonderzeichen in Benutzername / Passwort für HTTP-Proxy?

26

Ich versuche, einen HTTP-Proxy auf einem Windows-Computer einzurichten. Das Problem ist, dass das Kennwort ein Sonderzeichen (@) enthält, durch das der setBefehl fehlschlägt.

Ich habe versucht, das Zeichen ( \@) zu maskieren und es mit dem Hex-Wert ( %40) in Prozent zu kodieren , ohne Erfolg.

Zum Beispiel habe ich mit dem Benutzernamen Foo und dem Passwort B @ r die folgenden Befehle ausprobiert:

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

Wie kann ich, abgesehen vom Ändern des Passworts, den Proxy dazu bringen, das Passwort zu verwenden?

Pyropenguin
quelle
Schlägt der Satz fehl, oder schlägt das Tool, das die Umgebungsvariable http_proxy verwendet, aufgrund des Symbols @ fehl?
Mike Cornell
Ja. Da das Format "Benutzername: Passwort @ Server: Port" lautet und "@" in der Mitte Ihres Passworts steht, wird die rechte Seite Ihres Passworts als Hostname betrachtet. Daher schlägt die obige Auflösung des Hostnamens fehl, da der Hostname für "r @ http" steht. gateway.domain.org. Das "r @" sollte nicht da sein.
Philluminati
2
Ich habe% 40 ausprobiert und es hat funktioniert (unter Windows), sind Sie sicher?
thegreendroid
Tatsächlich funktioniert es sowohl unter Windows als auch unter Linux (Ubuntu).
thegreendroid

Antworten:

29

Sie müssen | in Prozent codieren kodiere die Sonderzeichen. ZB stattdessen:

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

du schreibst das:

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

Also @wird ersetzt durch %40.

Ravi Parekh
quelle
2
Kodierung ist in der Tat der Weg, um dieses Problem zu umgehen (und viele andere).
HTDutchy
Ich fand, dass ich einige Zeichen verdoppeln musste
dovidweisz
1
Ich schlage vor, encodeURIComponent()zu diesem Zweck einfach Javascript zu verwenden. Sie können ganz einfach Ihren Browser verwenden DeveloperTools -> Console.
Mir-Ismaili
2

Verwenden Sie für jedes Sonderzeichen den% Ascii-Code des Sonderzeichens in hexadezimaler Schreibweise. Angenommen, mein Passwort ist AB @ 12 # und dann sollte das Passwort wie folgt eingestellt werden

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

In der ASCII-Tabelle finden Sie Informationen zum hexadezimalen ASCII-Code einer beliebigen Zahl.

Sandeep Kumar
quelle
-1

Können Sie auf der Grundlage dieser Antwort auf SO versuchen, mit ^ das @ -Symbol zu umgehen?

Mike Cornell
quelle
In Reaktion auf beide ist der Satz erfolgreich, es ist das Tool, das die Umgebungsvariable verwendet: set http_proxy=http://foo:B^@[email protected]:80 jruby -S gem install rakeFEHLER: Während der Ausführung von gem ... (URI :: InvalidURIError) akzeptiert das Schema http keinen Registrierungsteil: foo: B @ r @ http- gateway.domain.org:80 (oder falscher Hostname?)
pyropenguin
Dies ist eine Linux-basierte Frage, keine Windows-basierte Frage. Die Verwendung von ^ funktioniert bei mir nicht. Ich wget: unable to resolve host address erhalte immer noch tf4ce @ server.company.com'`, nachdem ich die Proxy-Umgebungsvariable festgelegt habe.
Philluminati
2
Eigentlich ist es eine Windows-basierte Frage ... Ich kenne Pyropenguin persönlich.
Mike Cornell