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

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


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

du schreibst das:

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

Also @wird ersetzt durch %40.


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.



-1

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


In Reaktion auf beide ist der Satz erfolgreich, es ist das Tool, das die Umgebungsvariable verwendet: set http_proxy=http://foo:B^@r@http-gateway.domain.org: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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.