Για προορισμούς 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· το περιβάλλον εκτέλεσης μιας εφαρμογής μπορεί να εντοπίζει και να συνδυάζει διακομιστές μεσολάβησης διαφορετικά.

Σχετικά άρθρα