Πώς να χρησιμοποιήσετε proxy στο Python Requests (HTTP/HTTPS & Session pooling)
Updated:
Η βιβλιοθήκη requests της Python υποστηρίζει proxies της VinaProxy με ταυτοποίηση μέσω ενός λεξικού proxies, το οποίο αντιστοιχίζει τα σχήματα 'http' και 'https' στο http://user:pass@ip:port. Η σύνδεση αυτού του λεξικού σε ένα μόνιμο requests.Session() επαναχρησιμοποιεί τα υποκείμενα TCP sockets για γρήγορο web scraping με χαμηλή επιβάρυνση πόρων.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 ₫
- 5+ IP35.000 ₫
- 10+ IP25.000 ₫
- 20+ IP25.000 ₫
- 50+ IP25.000 ₫
- 100+ IP25.000 ₫
- 200+ IP25.000 ₫
- 500+ IP25.000 ₫
- 1000+ IP22.000 ₫
- 2000+ IP20.000 ₫
- 1 IP40.000 ₫
- 5+ IP35.000 ₫
- 10+ IP25.000 ₫
- 20+ IP25.000 ₫
- 50+ IP25.000 ₫
- 100+ IP25.000 ₫
- 200+ IP25.000 ₫
- 500+ IP25.000 ₫
- 1000+ IP22.000 ₫
- 2000+ IP20.000 ₫
Μορφοποίηση του λεξικού proxies & επαναχρησιμοποίηση Sessions
Η κλήση της requests.get() σε κάθε URL δημιουργεί κάθε φορά μια νέα σύνδεση TCP και ένα νέο TLS handshake. Η σύνδεση του proxy σας στο session = requests.Session() διατηρεί το τούνελ του proxy ανοιχτό σε διαδοχικά αιτήματα.
| Παράμετρος Requests | Προτεινόμενη σύνταξη | Τεχνικός σκοπός |
|---|---|---|
Κλειδί 'http' | 'http://user:pass@ip:port' | Δρομολογεί απλά αιτήματα HTTP μέσω του proxy |
Κλειδί 'https' | 'http://user:pass@ip:port' | Χρησιμοποιεί το σχήμα http:// ώστε η urllib3 να δημιουργεί ένα HTTP CONNECT tunnel για TLS |
Πλειάδα timeout | timeout=(5, 15) | Το connect timeout 5 δευτ. και το read timeout 15 δευτ. αποτρέπουν το πάγωμα των worker threads |
| Εναλλαγή pool | itertools.cycle(proxy_list) | Πραγματοποιεί ομοιόμορφη κυκλική εναλλαγή στο dedicated pool στατικών IP σας |
Αποφυγή συνηθισμένων λαθών με urllib3 & ProxyError
- Χρησιμοποιείτε πάντα
http://(και όχιhttps://) ως σχήμα URL του proxy τόσο για το κλειδί'http'όσο και για το'https'στο λεξικό, εκτός αν η θύρα του proxy απαιτεί ρητά TLS-over-TLS - Κάντε URL-encode τους ειδικούς χαρακτήρες στους κωδικούς πρόσβασης χρησιμοποιώντας το
urllib.parse.quote(password, safe='') - Το σφάλμα
407 Proxy Authentication Requiredσημαίνει ότι το όνομα χρήστη ή ο κωδικός πρόσβασης στο URL δεν ταιριάζει με τα στοιχεία σύνδεσης του πίνακα ελέγχου σας - Λειτουργεί πανομοιότυπα με
httpx.Client(proxy='http://user:pass@ip:port')καιsession.get(url, proxy=...)τουaiohttp
Βήμα προς βήμα
- 1
Μετατρέψτε το ip:port:user:pass σε σύνταξη URL
Χρησιμοποιήστε το Proxy Format Converter για να μετατρέψετε τη λίστα VinaProxy σας σε συμβολοσειρές
http://user:pass@ip:port. - 2
Ορίστε το λεξικό proxies
Ορίστε το
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}στο Python script σας. - 3
Συνδέστε το σε ένα στιγμιότυπο requests.Session()
Αρχικοποιήστε το
s = requests.Session()και καλέστεs.proxies.update(proxies)για μόνιμοKeep-Alivepooling. - 4
Επαληθεύστε την IP εξόδου με ένα δοκιμαστικό αίτημα
Εκτελέστε το
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())για να επιβεβαιώσετε την ενεργή IP του proxy.
Συχνές ερωτήσεις
Γιατί το κλειδί 'https' χρησιμοποιεί το 'http://user:pass@ip:port';
Το πρόθεμα http:// υποδεικνύει στην urllib3 πώς να συνδεθεί στον ίδιο τον διακομιστή proxy (χρησιμοποιώντας το τυπικό HTTP CONNECT), ενώ η end-to-end κίνησή σας προς τον ιστότοπο προορισμού https:// παραμένει πλήρως κρυπτογραφημένη με TLS.
Πώς μπορώ να εναλλάσσω 25 static proxies σε πολλαπλά αιτήματα στην Python;
Φορτώστε τα 25 proxy URLs σας στο pool = itertools.cycle(PROXIES) και περάστε το proxies={'http': p, 'https': p} σε κάθε αίτημα, εφαρμόζοντας ομαλό rate limiting ανά IP.
Μετρά η VinaProxy το bandwidth σε Python scraping scripts;
Όχι. Όλα τα προγράμματα Dedicated IPv4 και Static ISP περιλαμβάνουν απεριόριστη μηνιαία κίνηση δεδομένων.
Δημιουργήστε ένα απεριόριστο scraping pool στην Python
Άμεσα Dedicated IPv4 και Static ISP proxies σε 7 χώρες.
Αγορά Python Proxies