Χρήση IP proxy με urllib3
Επιλέξτε ProxyManager για HTTP proxy, εξετάστε τα πεδία απόκρισης urllib3 και λάβετε υπόψη επαναλήψεις και τον ξεχωριστό διαχειριστή SOCKS.
Για μικρή διάγνωση proxy στο urllib3, χρησιμοποιήστε ProxyManager με τις επαναλήψεις απενεργοποιημένες. Έτσι αναφέρεται η πρώτη προσπάθεια αντί να ξοδεύεται περισσότερος χρόνος σε καταχώριση που έπαψε να λειτουργεί. Σε έργο που διαχειρίζεται το uv:
uv add urllib3Αντικαταστήστε το τελικό σημείο τεκμηρίωσης με HTTP proxy της υπηρεσίας σας ή από τη λίστα HTTP proxy και εκτελέστε το αίτημα μέσω εκείνου του διαχειριστή:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
Διαβάστε πρώτα response.status και έπειτα εξετάστε response.data. Αυτά είναι τα πεδία urllib3· τα status_code και text του Requests δεν είναι υποκατάστατα. Μια απόρριψη ιστοτόπου μπορεί να φτάσει μέσω λειτουργικού proxy. Αντίθετα, εξαίρεση πριν από απόκριση δηλώνει αποτυχία ολοκλήρωσης του αιτήματος.
Το retries=False είναι διαγνωστική επιλογή, όχι πολιτική επαναλήψεων παραγωγής. Οι ρυθμίσεις 5 δευτερολέπτων σύνδεσης και 10 δευτερολέπτων ανάγνωσης περιορίζουν τις δικές τους φάσεις· δεν δίνουν εγγυημένη συνολική προθεσμία 15 δευτερολέπτων. Το DNS και η πρόοδος της απόκρισης μπορεί να επηρεάζουν τη συνολική αναμονή.
Το παράδειγμα προφορτώνει το σώμα και καθαρίζει στο τέλος τις δεξαμενές συνδέσεων του διαχειριστή. Για επαναλαμβανόμενα αιτήματα μέσω του ίδιου σημείου, κρατήστε τον διαχειριστή μέχρι να τελειώσει η εργασία για επαναχρησιμοποίηση συνδέσεων. Η μετάβαση σε preload_content=False αλλάζει τον κύκλο ζωής: ο καλών πρέπει να διαβάσει και να ελευθερώσει τη ροή απόκρισης.
Επιλέξτε διαχειριστή που ταιριάζει στην υπηρεσία ακρόασης. Ένας απλός PoolManager δεν αποκτά υποστήριξη proxy επειδή αποθηκεύτηκε URL αλλού· το SOCKS χρησιμοποιεί urllib3.contrib.socks.SOCKSProxyManager και τις προαιρετικές εξαρτήσεις του. Ο παραπάνω κώδικας ακολουθεί τη διαδρομή HTTP ProxyManager.