Stel voor HTTP-bestemmingen http_proxy met kleine letters in. curl negeert HTTP_PROXY met hoofdletters bewust. In een 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/

Deze toewijzingen gelden alleen voor het direct volgende commando. Vervang het luisteradres uit het voorbeeld door je eigen proxy; kies voor een vergelijking van openbare endpoints een kandidaat uit de HTTP-proxylijst. De variabele https_proxy kiest een route naar HTTPS-bestemmingen; een waarde met http:// betekent nog steeds een gewone HTTP-proxy die een tunnel naar de bestemming kan opzetten. PowerShell en Windows-opdrachtshells gebruiken een andere toewijzingssyntaxis.

Waarom juist deze schrijfwijze met hoofdletters gevaarlijk is

CGI-omgevingen kunnen binnenkomende requestheaders omzetten in HTTP_-variabelen met hoofdletters. Een header met de naam Proxy kan daardoor HTTP_PROXY worden. Als die als configuratie voor uitgaande verbindingen wordt vertrouwd, kunnen requestgegevens de proxy kiezen. De eis van curl om kleine letters te gebruiken voorkomt die koppeling; de uitzondering geldt niet op precies dezelfde manier voor HTTPS en andere protocolvariabelen.

Als een gewijzigde variabele de route niet verandert

Zoek eerst naar een protocolspecifieke variabele en daarna naar de terugvaloptie ALL_PROXY. Een overeenkomende NO_PROXY-regel kan de proxy omzeilen. Varianten met kleine letters en concurrerende definities tellen ook mee. Deze lus voor een Unix-achtige shell meldt alleen aanwezigheid en drukt geen waarden af die inloggegevens kunnen bevatten:

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

Bekijk de genoemde definities lokaal. Als er een terugkomt, controleer dan de configuratie van de startende shell, service, IDE, container of CI. Aanwezigheid wijst op mogelijke invoer; het vertelt niet welke waarde voorrang kreeg.

Geef zowel het endpoint als een lege omzeillijst op om één request van deze proxykeuzes te isoleren:

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

Voor een toegestane directe vergelijking:

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

Deze commando's helpen een geërfde route van een verbindingsfout te onderscheiden. Lees de resultaten van de proxytest stap voor stap voordat je meer omgevingsinstellingen wijzigt. Pas de variabeleregels van curl toe op curl; de eigen runtime van een toepassing kan proxy's anders ontdekken en samenvoegen.

Gerelateerde artikelen