Jak používat proxy v Python Requests (HTTP/HTTPS a pooling Sessions)
Updated:
Knihovna requests v Pythonu přijímá autentizované VinaProxy proxy prostřednictvím slovníku proxies, který mapuje schémata 'http' i 'https' na http://user:pass@ip:port. Přiřazení tohoto slovníku k trvalé relaci requests.Session() znovu využívá podkladové TCP sockety pro rychlý web scraping s nízkou režií.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
Formátování slovníku proxies a opětovné využití Sessions
Volání requests.get() pro každou URL adresu pokaždé vytvoří zcela nové TCP spojení a TLS handshake. Navázání vaší proxy na session = requests.Session() udržuje proxy tunel otevřený napříč po sobě jdoucími požadavky.
| Parametr Requests | Doporučená syntaxe | Technický účel |
|---|---|---|
Klíč 'http' | 'http://user:pass@ip:port' | Směruje běžné HTTP požadavky přes proxy |
Klíč 'https' | 'http://user:pass@ip:port' | Používá schéma http://, aby urllib3 vytvořila tunel HTTP CONNECT pro TLS |
N-tice timeout | timeout=(5, 15) | 5s časový limit připojení a 15s limit čtení zabraňují zamrznutí worker vláken |
| Rotace poolu | itertools.cycle(proxy_list) | Rovnoměrně cykluje napříč vaším poolem dedikovaných statických IP adres |
Jak se vyhnout běžným úskalím s urllib3 a ProxyError
- Jako schéma proxy URL pro oba klíče slovníku
'http'i'https'vždy používejtehttp://(nikolihttps://), pokud váš proxy port výslovně nevyžaduje TLS-over-TLS - Speciální znaky v heslech kódujte do tvaru URL pomocí
urllib.parse.quote(password, safe='') - Chyba
407 Proxy Authentication Requiredznamená, že uživatelské jméno nebo heslo v URL řetězci neodpovídá vašim přihlašovacím údajům v klientském panelu - Funguje zcela totožně s
httpx.Client(proxy='http://user:pass@ip:port')i vaiohttpssession.get(url, proxy=...)
Krok za krokem
- 1
Převeďte formát ip:port:user:pass na URL syntaxi
Použijte náš Proxy Format Converter k převodu vašeho VinaProxy seznamu na řetězce
http://user:pass@ip:port. - 2
Definujte slovník proxies
Ve svém skriptu v Pythonu nastavte
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}. - 3
Připojte slovník k instanci requests.Session()
Inicializujte
s = requests.Session()a zavolejtes.proxies.update(proxies)pro trvalýKeep-Alivepooling. - 4
Ověřte výstupní IP adresu testovacím požadavkem
Spusťte
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())pro ověření aktivní IP adresy proxy.
Často kladené otázky
Proč klíč 'https' používá 'http://user:pass@ip:port'?
Předpona http:// říká knihovně urllib3, jak se má připojit k samotnému proxy serveru (pomocí standardního HTTP CONNECT), zatímco váš koncový provoz k cílovému https:// webu zůstává plně šifrován přes TLS.
Jak v Pythonu rotovat 25 statických proxy napříč požadavky?
Načtěte svých 25 proxy URL do pool = itertools.cycle(PROXIES) a předávejte proxies={'http': p, 'https': p} pro každý požadavek s ohleduplným rate limitingem na úroveň IP.
Měří VinaProxy přenesená data u scraping skriptů v Pythonu?
Ne. Všechny tarify Dedicated IPv4 a Static ISP zahrnují neomezený měsíční přenos dat.
Vytvořte si neomezený scraping pool v Pythonu
Okamžité Dedicated IPv4 a Static ISP proxy v 7 zemích.
Koupit proxy pro Python