Чаму curl ігнаруе HTTP_PROXY
Наўмыснае выключэнне curl для HTTP_PROXY, зменныя асобных пратаколаў, ALL_PROXY і прадказальная праверка проксі праз асяроддзе.
Для HTTP-адрасоў задайце зменную http_proxy малымі літарамі. curl наўмысна ігнаруе HTTP_PROXY вялікімі літарамі. У POSIX-абалонцы:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Гэтыя прысваенні дзейнічаюць толькі для каманды, якая ідзе адразу пасля іх. Замяніце адрас праслухоўвання з прыкладу сваім проксі; для параўнання публічных вузлоў выберыце кандыдата са спіса HTTP-проксі. Зменная https_proxy выбірае маршрут да HTTPS-адрасоў; значэнне з http:// па-ранейшаму азначае звычайны HTTP-проксі, здольны стварыць тунэль да мэты. PowerShell і камандныя абалонкі Windows ужываюць іншы сінтаксіс прысваення.
Чым небяспечны менавіта гэты запіс вялікімі літарамі
CGI-асяроддзі могуць ператвараць загалоўкі ўваходных запытаў у зменныя HTTP_ вялікімі літарамі. Таму загаловак з імем Proxy можа стаць HTTP_PROXY. Калі давяраць яму як наладзе выходных злучэнняў, даныя запыту змогуць выбіраць проксі. Патрабаванне curl ужываць малыя літары пазбягае такога адлюстравання; для HTTPS і зменных іншых пратаколаў выключэнне дзейнічае не зусім гэтак жа.
Калі змена зменнай не змяняе маршрут
Спачатку шукайце зменную канкрэтнага пратакола, потым рэзервовую ALL_PROXY. Адпаведнае правіла NO_PROXY можа абысці проксі. Варыянты малымі літарамі і канкурэнтныя азначэнні таксама маюць значэнне. Гэты цыкл для Unix-падобнай абалонкі паведамляе пра наяўнасць, не друкуючы значэнні, якія могуць утрымліваць уліковыя даныя:
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
doneПраверце пералічаныя азначэнні лакальна. Калі нейкае з'яўляецца зноў, праверце налады абалонкі запуску, службы, IDE, кантэйнера або CI. Наяўнасць паказвае магчымыя ўваходныя налады, а не тое, якое значэнне атрымала перавагу.
Каб ізаляваць адзін запыт ад гэтых варыянтаў выбару проксі, задайце і канцавы пункт, і пусты спіс абыходу:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Для параўнання з прамым злучэннем, калі яно дазволена:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Гэтыя каманды дапамагаюць адрозніць успадкаваны маршрут ад збою сувязі. Разбярыце вынікі праверкі проксі па этапах, перш чым змяняць іншыя налады асяроддзя. Правілы зменных curl ужывайце да curl; уласнае асяроддзе выканання праграмы можа інакш выяўляць і аб'ядноўваць проксі.