Ένας proxy που απορρίπτει CONNECT μπορεί να επιστρέψει έγγραφο σφάλματος HTTP που εξηγεί την πολιτική του ή την αποτυχία της επόμενης σύνδεσης. Για εξουσιοδοτημένη διάγνωση σε συνηθισμένο HTTP proxy, το curl μπορεί να στείλει αυτό το αίτημα απευθείας και να αποθηκεύσει την απάντηση:

curl --proxy '' --http1.1 --max-time 10 \
  --request CONNECT \
  --request-target service.example:443 \
  --header 'Host: service.example:443' \
  --dump-header tunnel.headers \
  --output tunnel.body \
  http://proxy.example:8080/

Το τελικό URL απευθύνεται στον ακροατή του proxy. Για επιτρεπόμενη σύγκριση δημόσιων proxy, η λίστα HTTP proxy παρέχει υποψηφίους για αυτό το URL ακροατή. Το --request παρέχει το token της μεθόδου· το --request-target παρέχει την αρχή CONNECT. Ο διαχωρισμός τους παράγει CONNECT service.example:443 HTTP/1.1.

Η κενή επιλογή proxy εμποδίζει το curl να δρομολογήσει αυτή τη διάγνωση μέσω άλλου κληρονομημένου proxy. Η εντολή παραλείπει σκόπιμα το --fail ώστε να διατηρηθεί έγγραφο σφάλματος HTTP.

Μια μη πιστοποιημένη απόπειρα μπορεί να σταματήσει στο 407 πριν φτάσει στην αποτυχία που ερευνάται. Χρησιμοποιήστε τη διάταξη πιστοποίησης που προορίζει ο proxy όταν αναπαράγετε πιστοποιημένο αίτημα.

Αυτό αφορά τον έλεγχο αποκρίσεων αποτυχίας. Αν ο proxy επιστρέψει 2xx, η σύνδεση γίνεται τούνελ αντί για συνηθισμένη μεταφορά σώματος HTTP. Αυτή η διάγνωση προσαρμοσμένης μεθόδου δεν ξεκινά την ανταλλαγή TLS του προορισμού και μπορεί να φτάσει στο χρονικό της όριο σε αποδεκτό ανοιχτό τούνελ.

Χρησιμοποιήστε την κανονική ροή αιτημάτων --proxy για πραγματική λήψη HTTPS. Κρατήστε την κατάσταση και το σώμα της διάγνωσης μαζί με τον συγκεκριμένο proxy και στόχο τους.

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