Έλεγχος σώματος αποτυχημένης απόκρισης CONNECT μέσω proxy με curl
Στείλτε ένα σωστά διαμορφωμένο διαγνωστικό CONNECT απευθείας σε έναν HTTP proxy και αποθηκεύστε ξεχωριστά τις κεφαλίδες και το σώμα της αποτυχίας HTTP.
Ένας 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 και στόχο τους.