Sådan bruges en proxy i Python Requests (HTTP/HTTPS og Session-pooling)
Updated:
Pythons requests-bibliotek understøtter godkendte VinaProxy-proxyer via en proxies-dictionary, der mapper både 'http'- og 'https'-skemaer til http://user:pass@ip:port. Ved at knytte denne dictionary til en vedvarende requests.Session() genbruges de underliggende TCP-sockets til hurtig web-scraping med lavt ressourceforbrug.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 ₫
- 5+ IP'er35.000 ₫
- 10+ IP'er25.000 ₫
- 20+ IP'er25.000 ₫
- 50+ IP'er25.000 ₫
- 100+ IP'er25.000 ₫
- 200+ IP'er25.000 ₫
- 500+ IP'er25.000 ₫
- 1000+ IP'er22.000 ₫
- 2000+ IP'er20.000 ₫
- 1 IP40.000 ₫
- 5+ IP'er35.000 ₫
- 10+ IP'er25.000 ₫
- 20+ IP'er25.000 ₫
- 50+ IP'er25.000 ₫
- 100+ IP'er25.000 ₫
- 200+ IP'er25.000 ₫
- 500+ IP'er25.000 ₫
- 1000+ IP'er22.000 ₫
- 2000+ IP'er20.000 ₫
Formatering af proxies-dictionary og genbrug af Sessions
Et kald til requests.get() på hver URL opretter en helt ny TCP-forbindelse og et nyt TLS-håndtryk hver gang. Ved at binde din proxy til session = requests.Session() holdes proxy-tunnelen åben på tværs af efterfølgende anmodninger.
| Requests-parameter | Anbefalet syntaks | Teknisk formål |
|---|---|---|
'http'-nøgle | 'http://user:pass@ip:port' | Sender almindelige HTTP-anmodninger gennem proxyen |
'https'-nøgle | 'http://user:pass@ip:port' | Bruger http://-skemaet, så urllib3 opretter en HTTP CONNECT-tunnel til TLS |
timeout-tuple | timeout=(5, 15) | 5 s connect-timeout og 15 s read-timeout forhindrer fastlåste worker-tråde |
| Pool-rotation | itertools.cycle(proxy_list) | Roterer jævnt over din dedikerede statiske IP-pool |
Undgå almindelige faldgruber med urllib3 og ProxyError
- Brug altid
http://(ikkehttps://) som proxy-URL-skema for både'http'- og'https'-nøgler i din dictionary, medmindre din proxy-port udtrykkeligt kræver TLS-over-TLS - URL-indkod specialtegn i adgangskoder med
urllib.parse.quote(password, safe='') - En
407 Proxy Authentication Required-fejl betyder, at brugernavnet eller adgangskoden i din URL-streng ikke matchede loginoplysningerne fra dit kontrolpanel - Fungerer identisk med
httpx.Client(proxy='http://user:pass@ip:port')ogaiohttpsession.get(url, proxy=...)
Trin for trin
- 1
Konverter ip:port:user:pass til URL-syntaks
Brug vores Proxy Format Converter til at omdanne din VinaProxy-liste til
http://user:pass@ip:port-strenge. - 2
Definer din proxies-dictionary
Indsæt
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}i dit Python-script. - 3
Knyt til en requests.Session()-instans
Initialiser
s = requests.Session(), og kalds.proxies.update(proxies)for vedvarendeKeep-Alive-pooling. - 4
Bekræft udgangs-IP med en testanmodning
Kør
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())for at bekræfte den aktive proxy-IP.
Ofte stillede spørgsmål
Hvorfor bruger 'https'-nøglen 'http://user:pass@ip:port'?
Præfikset http:// fortæller urllib3, hvordan der oprettes forbindelse til selve proxyserveren (ved hjælp af standard HTTP CONNECT), mens din end-to-end-trafik til målets https://-websted forbliver fuldt TLS-krypteret.
Hvordan roterer jeg 25 statiske proxyer over anmodninger i Python?
Indlæs dine 25 proxy-URL'er i pool = itertools.cycle(PROXIES), og send proxies={'http': p, 'https': p} med ved hver anmodning sammen med en skånsom hastighedsbegrænsning pr. IP.
Måler VinaProxy båndbreddeforbrug på Python-scraping-scripts?
Nej. Alle planer for Dedicated IPv4 og Static ISP inkluderer ubegrænset månedlig trafik.
Opbyg en ubegrænset Python-scraping-pool
Øjeblikkelige Dedicated IPv4- og Static ISP-proxyer i 7 lande.
Køb Python-proxyer