Bakit Binabalewala ng curl ang HTTP_PROXY
Unawain ang sinadyang HTTP_PROXY exception ng curl, mga variable ayon sa protocol, ALL_PROXY, at isang mas mahuhulaang proxy test gamit ang environment.
Para sa mga HTTP na destinasyon, itakda ang maliit na titik na http_proxy. Sadyang binabalewala ng curl ang malaking titik na HTTP_PROXY. Sa isang POSIX shell:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Ang mga pagtatalagang ito ay para lamang sa command na kaagad na kasunod. Palitan ang listening address sa halimbawa ng sarili mong proxy; para sa paghahambing ng mga pampublikong endpoint, pumili ng kandidato mula sa listahan ng mga HTTP proxy. Ang variable na https_proxy ang pumipili ng ruta para sa mga HTTPS na destinasyon; ang halagang may http:// ay nangangahulugan pa rin ng karaniwang HTTP proxy na kayang gumawa ng tunnel patungo sa destinasyon. Iba ang syntax ng pagtatalaga sa PowerShell at mga command shell ng Windows.
Bakit mapanganib ang partikular na baybay na ito sa malalaking titik
Maaaring gawing mga variable na HTTP_ sa malalaking titik ng mga CGI environment ang mga header ng papasok na request. Kaya ang header na may pangalang Proxy ay maaaring maging HTTP_PROXY. Kung pagkakatiwalaan ito bilang configuration ng papalabas na koneksyon, makakapili ng proxy ang data ng request. Iniiwasan ng hinihinging maliliit na titik ng curl ang mapping na ito; hindi eksaktong pareho ang paglalapat ng exception sa HTTPS at mga variable ng ibang protocol.
Kung hindi nagbabago ang ruta kapag binago ang variable
Hanapin muna ang variable para sa partikular na protocol, saka ang fallback na ALL_PROXY. Maaaring lampasan ng tumutugmang NO_PROXY rule ang proxy. Mahalaga rin ang mga bersiyong maliliit ang titik at mga depinisyong nag-uunahan. Iniuulat ng loop na ito para sa Unix-like shell ang presensya nang hindi inilalabas ang mga halagang maaaring may mga kredensyal:
for name in http_proxy HTTP_PROXY https_proxy HTTPS_PROXY all_proxy ALL_PROXY no_proxy NO_PROXY; do
if printenv "$name" >/dev/null; then
printf '%s is set\n' "$name"
fi
doneSuriin nang lokal ang mga nakalistang depinisyon. Kung may muling lumitaw, tingnan ang configuration ng naglulunsad na shell, serbisyo, IDE, container o CI. Ang presensya ay tumutukoy sa posibleng input; hindi nito sinasabi kung aling halaga ang nangibabaw.
Para maihiwalay ang isang request sa mga pagpiling ito ng proxy, ibigay kapwa ang endpoint at isang walang-lamang bypass list:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Para sa direktang paghahambing kung pinapayagan:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Tumutulong ang mga command na ito na ihiwalay ang minanang ruta sa pagkabigo ng koneksyon. Basahin ang mga resulta ng proxy test sa bawat yugto bago magbago ng higit pang setting ng environment. Ilapat ang mga tuntunin ng variable ng curl sa curl; maaaring iba ang pagtuklas at pagsasama ng mga proxy sa sariling runtime ng isang application.