Συγκρίνετε τον φορητό υπολογιστή και τη φιλοξενούμενη διεργασία σε δύο διαφορετικά επίπεδα:

ΕπίπεδοΕρώτηση
Content-EncodingΜπορεί ο πελάτης να αποσυμπιέσει τα επιστρεφόμενα byte gzip/deflate/Brotli;
CharsetΠώς τα αποσυμπιεσμένα byte γίνονται κείμενο;

Το Requests χειρίζεται συνήθως gzip/deflate· το Brotli απαιτεί υποστηριζόμενη εγκατεστημένη βιβλιοθήκη. Ένα χειροκίνητα αντιγραμμένο Accept-Encoding μπορεί να διαφημίζει br ενώ αυτό το περιβάλλον δεν μπορεί να το αποκωδικοποιήσει. Η επιλογή κειμένου UTF-8 δεν αποσυμπιέζει το Brotli.

Όταν περιορίζετε σκόπιμα τη διαπραγμάτευση:

response = session.get(
    url,
    proxies={"https": "http://proxy.example:8080"},
    headers={"Accept-Encoding": "gzip, deflate"},
    timeout=30,
)
response.raise_for_status()

Χρησιμοποιήστε το υπάρχον Session, τη διεύθυνση HTTPS και τις απαιτούμενες κεφαλίδες/έλεγχο ταυτότητας. Συγκρίνετε το εξερχόμενο Accept-Encoding, το εισερχόμενο Content-Encoding και την υποστήριξη πακέτων και στα δύο μηχανήματα· ένας μετασχηματιστικός μεσάζων μπορεί επίσης να παρέχει παρωχημένα μεταδεδομένα. Μια ξεχωριστή σύγκριση δημόσιας σελίδας μπορεί να χρησιμοποιήσει το Λίστα διακομιστών μεσολάβησης HTTP για τη διεύθυνση μεσολάβησης όπου επιτρέπονται δημόσιοι μεσάζοντες, χωρίς κληρονομημένα διαπιστευτήρια μεσολάβησης, αντιγραμμένες κεφαλίδες λογαριασμού ή ιδιωτικά δεδομένα σώματος.

Κατά τα λοιπά προτιμήστε την κανονική διαπραγμάτευση του πελάτη. Οι βολικές διεπαφές content/text του Requests αποκωδικοποιούν την υποστηριζόμενη κωδικοποίηση, οπότε μην αποσυμπιέζετε ξανά την έξοδό τους μόνο επειδή την ονομάζει η κεφαλίδα.

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