Bagaimana cara menggunakan karakter khusus dalam nama pengguna / kata sandi untuk proxy HTTP?

26

Saya mencoba mengatur proxy HTTP pada mesin Windows. Masalahnya, kata sandi memiliki karakter khusus (@) di dalamnya yang menyebabkan setperintah gagal.

Saya telah mencoba melarikan diri karakter ( \@) dan persen-encoding dengan nilai hex ( %40), tidak berhasil.

Misalnya, dengan nama pengguna Foo dan kata sandi B @ r, saya telah mencoba perintah berikut:

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

Selain mengubah kata sandi, bagaimana saya dapat meminta proxy menggunakan kata sandi?

pyropenguin
sumber
Apakah set gagal atau apakah alat menggunakan variabel lingkungan http_proxy gagal karena simbol @?
Mike Cornell
Iya nih. Karena formatnya adalah nama pengguna: kata sandi @ server: port, memiliki @ di tengah kata sandi Anda menyebabkan sisi kanan kata sandi Anda dianggap sebagai nama host, sehingga resolusi nama host di atas gagal karena menganggap nama host adalah r @ http- gateway.domain.org. "R @" seharusnya tidak ada di sana.
Philluminati
2
Saya mencoba menggunakan% 40 dan berhasil (di Windows), Anda yakin?
thegreendroid
Bahkan, ia bekerja pada Windows dan Linux (Ubuntu).
thegreendroid

Jawaban:

29

Anda harus meng-enkode persen | menyandikan karakter khusus. Misalnya bukannya ini:

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

Anda menulis ini:

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

Jadi @akan diganti dengan %40.

ravi parekh
sumber
2
pengkodean memang cara untuk mengatasi masalah ini (dan banyak lainnya).
HTDutchy
saya menemukan bahwa saya perlu menggandakan urlencode beberapa karakter
dovidweisz
1
Saya sarankan hanya menggunakan javascript encodeURIComponent()untuk tujuan ini. Anda dapat dengan mudah menggunakan browser Anda DeveloperTools -> Console.
Mir-Ismaili
2

Gunakan kode% Ascii karakter khusus dalam notasi heksadesimal untuk setiap karakter khusus. Misalkan kata sandi saya adalah AB @ 12 # & maka kata sandi harus ditetapkan sebagai

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

Lihat tabel ascii untuk mengetahui kode ascii heksadesimal dari nomor apa pun.

Sandeep Kumar
sumber
-1

Berdasarkan jawaban ini pada SO , dapatkah Anda mencoba menggunakan ^ untuk menghindari simbol @?

Mike Cornell
sumber
Menanggapi keduanya, himpunan berhasil, ini adalah alat yang menggunakan variabel lingkungan: set http_proxy=http://foo:B^@[email protected]:80 jruby -S gem install rakeERROR: Saat menjalankan permata ... (URI :: InvalidURIError) skema http tidak menerima bagian registri: foo: B @ r @ http- gateway.domain.org:80 (atau hostname yang buruk?)
pyropenguin
Ini adalah pertanyaan berbasis Linux, bukan pertanyaan berbasis Windows, menggunakan ^ tidak berfungsi untuk saya. Saya masih mendapatkan wget: unable to resolve host address tf4ce @ server.company.com 'setelah mengatur variabel lingkungan proxy.
Philluminati
2
Sebenarnya itu ADALAH pertanyaan berbasis Windows ... Saya tahu pyropenguin secara pribadi.
Mike Cornell