Cum să folosești un proxy în Python Requests (HTTP/HTTPS & pooling de sesiuni)
Updated:
Biblioteca requests din Python acceptă proxy-uri VinaProxy autentificate printr-un dicționar proxies care mapează atât schemele 'http', cât și 'https' la http://user:pass@ip:port. Atașarea acestui dicționar la o instanță persistentă de requests.Session() reutilizează socketurile TCP subiacente pentru web scraping rapid și cu consum redus de resurse.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 VND
- 5+ IP-uri35.000 VND
- 10+ IP-uri25.000 VND
- 20+ IP-uri25.000 VND
- 50+ IP-uri25.000 VND
- 100+ IP-uri25.000 VND
- 200+ IP-uri25.000 VND
- 500+ IP-uri25.000 VND
- 1000+ IP-uri22.000 VND
- 2000+ IP-uri20.000 VND
- 1 IP40.000 VND
- 5+ IP-uri35.000 VND
- 10+ IP-uri25.000 VND
- 20+ IP-uri25.000 VND
- 50+ IP-uri25.000 VND
- 100+ IP-uri25.000 VND
- 200+ IP-uri25.000 VND
- 500+ IP-uri25.000 VND
- 1000+ IP-uri22.000 VND
- 2000+ IP-uri20.000 VND
Formatarea dicționarului proxies și reutilizarea sesiunilor
Apelarea requests.get() pentru fiecare URL creează de fiecare dată o conexiune TCP complet nouă și o negociere TLS. Asocierea proxy-ului la session = requests.Session() menține tunelul proxy deschis pe parcursul cererilor consecutive.
| Parametru Requests | Sintaxă recomandată | Scop tehnic |
|---|---|---|
Cheia 'http' | 'http://user:pass@ip:port' | Redirecționează cererile HTTP simple prin proxy |
Cheia 'https' | 'http://user:pass@ip:port' | Folosește schema http:// pentru ca urllib3 să inițieze un tunel HTTP CONNECT pentru TLS |
Tuplul timeout | timeout=(5, 15) | Timeout de conectare de 5s și timeout de citire de 15s pentru a preveni blocarea thread-urilor worker |
| Rotația pool-ului | itertools.cycle(proxy_list) | Alternează uniform cererile în cadrul pool-ului tău de IP-uri statice dedicate |
Evitarea capcanelor comune legate de urllib3 și ProxyError
- Folosește întotdeauna
http://(nuhttps://) ca schemă de URL proxy atât pentru cheia'http', cât și pentru'https'din dicționar, cu excepția cazului în care portul proxy necesită explicit TLS-over-TLS - Codifică caracterele speciale din parole în format URL folosind
urllib.parse.quote(password, safe='') - O eroare
407 Proxy Authentication Requiredînseamnă că numele de utilizator sau parola din șirul URL nu corespund credențialelor din panoul de control - Funcționează identic cu
httpx.Client(proxy='http://user:pass@ip:port')șiaiohttpsession.get(url, proxy=...)
Pas cu pas
- 1
Convertește ip:port:user:pass în sintaxă URL
Folosește instrumentul nostru Proxy Format Converter pentru a transforma lista ta VinaProxy în șiruri
http://user:pass@ip:port. - 2
Definește dicționarul proxies
Setează
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}în scriptul tău Python. - 3
Atașează la o instanță requests.Session()
Inițializează
s = requests.Session()și apeleazăs.proxies.update(proxies)pentru pooling persistentKeep-Alive. - 4
Verifică IP-ul de ieșire printr-o cerere de test
Rulează
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())pentru a confirma IP-ul proxy activ.
Întrebări frecvente
De ce folosește cheia 'https' valoarea 'http://user:pass@ip:port'?
Prefixul http:// îi indică bibliotecii urllib3 cum să se conecteze la serverul proxy în sine (folosind HTTP CONNECT standard), în timp ce traficul tău end-to-end către site-ul țintă https:// rămâne complet criptat prin TLS.
Cum rotesc 25 de proxy-uri statice între cereri în Python?
Încarcă cele 25 de URL-uri proxy în pool = itertools.cycle(PROXIES) și transmite proxies={'http': p, 'https': p} la fiecare cerere, respectând o limitare rezonabilă a ratei de cereri per IP.
Contorizează VinaProxy traficul pentru scripturile de scraping în Python?
Nu. Toate planurile Dedicated IPv4 și Static ISP includ trafic lunar nelimitat.
Creează un pool de scraping în Python fără limite de trafic
Proxy-uri Dedicated IPv4 și Static ISP instant în 7 țări.
Cumpără proxy-uri Python