För HTTP-mål anger du http_proxy med små bokstäver. curl ignorerar avsiktligt HTTP_PROXY med stora bokstäver. I ett POSIX-skal:

http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/

Dessa tilldelningar gäller bara kommandot direkt efter dem. Ersätt lyssningsadressen i exemplet med din proxy; välj en kandidat från listan över HTTP-proxyer för att jämföra offentliga ändpunkter. Variabeln https_proxy väljer en väg till HTTPS-mål; ett värde med http:// betyder fortfarande en vanlig HTTP-proxy som kan skapa en tunnel till målet. PowerShell och Windows kommandoskal använder en annan tilldelningssyntax.

Varför just den här stavningen med stora bokstäver är farlig

CGI-miljöer kan omvandla inkommande förfrågningars headerfält till HTTP_-variabler med stora bokstäver. Ett headerfält med namnet Proxy kan därför bli HTTP_PROXY. Att lita på det som konfiguration för utgående anslutningar skulle låta förfrågningsdata välja proxy. curls krav på små bokstäver undviker denna koppling; undantaget gäller inte på exakt samma sätt för HTTPS och andra protokollvariabler.

Om en ändrad variabel inte ändrar vägen

Leta först efter en protokollspecifik variabel och sedan reservvalet ALL_PROXY. En matchande NO_PROXY-regel kan gå förbi proxyn. Varianter med små bokstäver och konkurrerande definitioner spelar också roll. Den här loopen för ett Unix-liknande skal visar förekomst utan att skriva ut värden som kan innehålla inloggningsuppgifter:

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

Undersök de listade definitionerna lokalt. Om någon dyker upp igen, kontrollera inställningarna för det startande skalet, tjänsten, IDE:n, containern eller CI. Förekomst pekar ut möjliga indata; den berättar inte vilket värde som fick företräde.

För att isolera en förfrågan från dessa proxyval anger du både ändpunkten och en tom undantagslista:

curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/

För en tillåten direkt jämförelse:

curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/

Dessa kommandon hjälper dig att skilja en ärvd väg från ett anslutningsfel. Läs proxytestets resultat steg för steg innan du ändrar fler miljöinställningar. Tillämpa curls variabelregler på curl; ett programs egen körmiljö kan hitta och kombinera proxyer annorlunda.

Relaterade artiklar