Een HTTP-proxy testen met curl
Gebruik een curl-test met tijdslimieten om proxyverbinding, HTTPS-tunnel, antwoordstatus en uitzonderingen te onderzoeken zonder de algemene proxy-instellingen van je apparaat te wijzigen.
Vervang 127.0.0.1:8080 door een eindpunt van je dienst of uit de lijst met HTTP-proxy’s en voer dit uit voor een onschuldige HTTPS-bestemming:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Het loopbackadres verwijst naar een listener op je eigen computer. Deze opdracht kiest die expliciet, wist voor deze aanroep de uitzonderingslijst van curl en geeft vijf seconden voor het opzetten van de verbinding en vijftien seconden in totaal. De proxy-instellingen van browser en systeem blijven ongemoeid.
Gebruik het echte uitvoerbare curl-bestand als je shell curl als alias voor een ander programma gebruikt; curl --version identificeert de build. Vereist de listener zelf TLS, gebruik dan het gedocumenteerde URL-schema van de proxy.
Lees vier resultaten in plaats van één groen licht
- Verbonden met de gekozen proxy: adres en poort zijn bereikbaar.
- CONNECT geaccepteerd: de proxy heeft een tunnel naar de HTTPS-bestemming geopend.
- Certificaat van de bestemming gecontroleerd: TLS is voltooid met de verwachte vertrouwenscontroles.
- Antwoord van de bestemming ontvangen: bekijk status en inhoud om te bepalen of dit het resultaat is dat je toepassing nodig heeft.
Na een werkende tunnel kan de bestemming nog steeds 403 of 429 teruggeven. curl kan ook succesvol afsluiten na een HTTP-foutantwoord. Noteer daarom zowel de antwoordstatus als het foutresultaat van curl. Alleen een TCP-verbinding of geslaagde CONNECT is onvoldoende.
Een compact resultaat voor herhaalde vergelijkingen
In een Unix-achtige shell kun je de inhoud weggooien en tunnelstatus, bestemmingsstatus, verbindingspartner en verstreken tijd afdrukken:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect beschrijft het tunnelantwoord; http_code het uiteindelijke HTTP-antwoord. remote_ip is de verbindingspartner van curl, geen onafhankelijke meting van het uitgaande adres van de proxy. Vervang /dev/null op andere systemen of bewaar de antwoordinhoud.
Mislukt de test, zoek dan de mislukte stap bij het opzetten of overdragen en vergelijk dezelfde bestemming rechtstreeks waar die route is toegestaan:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' omzeilt proxy’s. Mislukt de certificaatcontrole langs beide routes, dan wijst dat op een gedeeld vertrouwensprobleem. Lukt de directe verbinding maar wordt CONNECT geweigerd, dan wijst dat op proxyauthenticatie of beleid. Controleer de uitgebreide uitvoer voordat je die deelt, want er kan identificerende informatie in staan.
Sla eindpunt, doel en tijdstip samen met de uitkomst op. Dit legt vast wat voor die aanvraag werkte; toekomstige beschikbaarheid, privacy en prestaties onder belasting vragen om afzonderlijk bewijs.