curl എന്തുകൊണ്ട് HTTP_PROXY അവഗണിക്കുന്നു
curl-ന്റെ മനഃപൂർവമായ HTTP_PROXY ഒഴിവ്, പ്രോട്ടോക്കോൾ-നിർദ്ദിഷ്ട വേരിയബിളുകൾ, ALL_PROXY, പരിസ്ഥിതി അടിസ്ഥാനത്തിലുള്ള പ്രവചനയോഗ്യമായ പ്രോക്സി പരിശോധന എന്നിവ മനസ്സിലാക്കുക.
HTTP ലക്ഷ്യങ്ങൾക്കായി ചെറിയ അക്ഷരത്തിലുള്ള http_proxy സജ്ജമാക്കുക. വലിയ അക്ഷരത്തിലുള്ള HTTP_PROXY curl മനഃപൂർവം അവഗണിക്കുന്നു. 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-നു ബാധകമാക്കുക; ആപ്ലിക്കേഷന്റെ സ്വന്തം റൺടൈം പ്രോക്സികളെ മറ്റൊരു രീതിയിൽ കണ്ടെത്തുകയും സംയോജിപ്പിക്കുകയും ചെയ്യാം.