Kako koristiti proxy u Python Requests (HTTP/HTTPS i Session pooling)
Updated:
Pythonova biblioteka requests prihvata autentifikovane VinaProxy proxyje putem proxies rječnika koji mapira i 'http' i 'https' šeme na http://user:pass@ip:port. Povezivanje tog rječnika na perzistentni requests.Session() ponovo koristi osnovne TCP socket-e za brz web scraping uz minimalno opterećenje.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 ₫
- 5+ IP-ova35.000 ₫
- 10+ IP-ova25.000 ₫
- 20+ IP-ova25.000 ₫
- 50+ IP-ova25.000 ₫
- 100+ IP-ova25.000 ₫
- 200+ IP-ova25.000 ₫
- 500+ IP-ova25.000 ₫
- 1000+ IP-ova22.000 ₫
- 2000+ IP-ova20.000 ₫
- 1 IP40.000 ₫
- 5+ IP-ova35.000 ₫
- 10+ IP-ova25.000 ₫
- 20+ IP-ova25.000 ₫
- 50+ IP-ova25.000 ₫
- 100+ IP-ova25.000 ₫
- 200+ IP-ova25.000 ₫
- 500+ IP-ova25.000 ₫
- 1000+ IP-ova22.000 ₫
- 2000+ IP-ova20.000 ₫
Formatiranje proxies rječnika i ponovna upotreba Session objekata
Pozivanje requests.get() za svaki URL stvara potpuno novu TCP vezu i TLS rukovanje svaki put. Vezivanje vašeg proxya za session = requests.Session() drži proxy tunel otvorenim kroz uzastopne zahtjeve.
| Requests parametar | Preporučena sintaksa | Tehnička svrha |
|---|---|---|
Ključ 'http' | 'http://user:pass@ip:port' | Usmjerava obične HTTP zahtjeve kroz proxy |
Ključ 'https' | 'http://user:pass@ip:port' | Koristi http:// šemu kako bi urllib3 uspostavio HTTP CONNECT tunel za TLS |
timeout torka | timeout=(5, 15) | Vremensko ograničenje povezivanja od 5s i čitanja od 15s sprečava blokiranje radnih niti |
| Rotacija bazena | itertools.cycle(proxy_list) | Ravnomjerno rotira kroz vaš namjenski bazen statičkih IP adresa |
Izbjegavanje uobičajenih zamki za urllib3 i ProxyError
- Uvijek koristite
http://(nehttps://) kao šemu proxy URL-a za oba rječnička ključa'http'i'https', osim ako vaš proxy port izričito ne zahtijeva TLS-over-TLS - URL-enkodirajte specijalne znakove u lozinkama koristeći
urllib.parse.quote(password, safe='') - Greška
407 Proxy Authentication Requiredznači da se korisničko ime ili lozinka u vašem URL stringu ne podudaraju s podacima s vaše kontrolne table - Radi identično s
httpx.Client(proxy='http://user:pass@ip:port')iaiohttpsession.get(url, proxy=...)
Korak po korak
- 1
Pretvorite ip:port:user:pass u URL sintaksu
Koristite naš Proxy Format Converter da transformišete vašu VinaProxy listu u
http://user:pass@ip:portstringove. - 2
Definišite proxies rječnik
Postavite
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}u vašoj Python skripti. - 3
Povežite s instancom requests.Session()
Inicijalizirajte
s = requests.Session()i pozovites.proxies.update(proxies)za perzistentnoKeep-Alivepoolanje. - 4
Provjerite izlazni IP testnim zahtjevom
Pokrenite
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())da potvrdite aktivnu proxy IP adresu.
Često postavljana pitanja
Zašto ključ 'https' koristi 'http://user:pass@ip:port'?
Prefiks http:// govori biblioteci urllib3 kako da se poveže sa samim proxy serverom (koristeći standardni HTTP CONNECT), dok vaš sveobuhvatni saobraćaj prema ciljnoj https:// web stranici ostaje potpuno TLS-enkriptovan.
Kako rotirati 25 statičkih proxyja kroz zahtjeve u Pythonu?
Učitajte svojih 25 proxy URL-ova u pool = itertools.cycle(PROXIES) i proslijedite proxies={'http': p, 'https': p} po zahtjevu uz umjereno ograničenje brzine po IP adresi.
Mjeri li VinaProxy potrošnju protoka za Python scraping skripte?
Ne. Svi Dedicated IPv4 i Static ISP paketi uključuju neograničen mjesečni saobraćaj.
Izgradite Python scraping bazen bez ograničenja
Instant Dedicated IPv4 i Static ISP proxyji u 7 zemalja.
Kupite Python proxyje