Χρήση cookies και διακομιστή μεσολάβησης σε έναν opener urllib της Python
Συνδυάστε τα ProxyHandler και HTTPCookieProcessor σε έναν opener urllib ώστε τα σχετικά αιτήματα μέσω διακομιστή μεσολάβησης να μοιράζονται το επιδιωκόμενο βάζο cookies.
Ένας opener urllib μπορεί να δρομολογεί αιτήματα μέσω διακομιστή μεσολάβησης και ταυτόχρονα να διατηρεί τα cookies του ιστότοπου. Δώστε του και τους δύο χειριστές:
from http.cookiejar import CookieJar
from urllib.request import (
HTTPCookieProcessor, ProxyHandler, build_opener,
)
cookies = CookieJar()
opener = build_opener(
ProxyHandler({"http": "http://proxy.example:8080"}),
HTTPCookieProcessor(cookies),
)
with opener.open("http://www.example.com/", timeout=10) as response:
body = response.read()Το παράδειγμα χρησιμοποιεί έναν απλό προορισμό HTTP και τη ρητή διαδρομή του μέσω διακομιστή μεσολάβησης. Για έναν επιτρεπτό έλεγχο δημόσιου ιστότοπου χωρίς έλεγχο ταυτότητας διακομιστή μεσολάβησης, επιλέξτε υποψήφιο από τη λίστα διακομιστών μεσολάβησης HTTP για αυτή τη διαδρομή διατηρώντας το επιδιωκόμενο βάζο cookies. Χρησιμοποιήστε ξανά τον opener για μεταγενέστερα αιτήματα της ίδιας συνεδρίας ιστότοπου. Ο επεξεργαστής cookies εξάγει αποδεκτά cookies απόκρισης και προσθέτει τα κατάλληλα στα επόμενα αιτήματα.
Η δημιουργία νέου κενού CookieJar πριν από κάθε κλήση απορρίπτει αυτή τη συνέχεια. Κρατήστε το βάζο δίπλα στη συνεδρία που αντιπροσωπεύει· χρησιμοποιήστε ξεχωριστά βάζα για λογαριασμούς ή ροές εργασίας των οποίων τα cookies πρέπει να παραμείνουν ξεχωριστά.
Ένα βασικό CookieJar κρατά την κατάσταση στη μνήμη. Για επιμονή μεταξύ εκτελέσεων του προγράμματος, επιλέξτε κατάλληλη υποκλάση FileCookieJar και αποθηκεύστε ή φορτώστε την σκόπιμα.
Δεν χρειάζεται να εγκαταστήσετε καθολικό opener για αυτή τη ρύθμιση. Η κλήση της μεθόδου open αυτού του αντικειμένου κρατά τον διακομιστή μεσολάβησης και τα cookies στην ίδια λειτουργία.