Ako používať proxy v Python Requests (HTTP/HTTPS a pooling Sessions)
Updated:
Knižnica requests pre Python podporuje overené VinaProxy proxy cez slovník proxies, ktorý mapuje schémy 'http' aj 'https' na http://user:pass@ip:port. Priradenie tohto slovníka k trvalej relácii requests.Session() opakovane využíva základné TCP sockety pre rýchly web scraping s nízkou réžiou.
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átovanie slovníka proxies a opätovné použitie Sessions
Volanie requests.get() na každú URL adresu vytvára zakaždým úplne nové TCP spojenie a TLS handshake. Naviazanie vašej proxy na session = requests.Session() udržiava proxy tunel otvorený naprieč po sebe idúcimi požiadavkami.
| Parameter Requests | Odporúčaná syntax | Technický účel |
|---|---|---|
Kľúč 'http' | 'http://user:pass@ip:port' | Smeruje bežné HTTP požiadavky cez proxy |
Kľúč 'https' | 'http://user:pass@ip:port' | Používa schému http://, aby urllib3 vytvoril HTTP CONNECT tunel pre TLS |
N-tica timeout | timeout=(5, 15) | 5s časový limit na pripojenie a 15s na čítanie zabraňuje zamrznutiu pracovných vlákien |
| Rotácia fondu | itertools.cycle(proxy_list) | Rovnomerne cykluje naprieč vaším fondom dedikovaných statických IP adries |
Ako sa vyhnúť bežným nástrahám s urllib3 a ProxyError
- Vždy používajte
http://(niehttps://) ako schému URL adresy proxy pre oba kľúče slovníka'http'aj'https', pokiaľ váš proxy port explicitne nevyžaduje TLS-over-TLS - Špeciálne znaky v heslách kódujte do formátu URL pomocou
urllib.parse.quote(password, safe='') - Chyba
407 Proxy Authentication Requiredznamená, že používateľské meno alebo heslo v reťazci URL sa nezhoduje s vašimi prihlasovacími údajmi v ovládacom paneli - Funguje identicky s
httpx.Client(proxy='http://user:pass@ip:port')ajaiohttpsession.get(url, proxy=...)
Krok za krokom
- 1
Preveďte ip:port:user:pass na URL syntax
Použite náš Proxy Format Converter na transformáciu vášho VinaProxy zoznamu na reťazce v tvare
http://user:pass@ip:port. - 2
Definujte slovník proxies
Nastavte
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}vo vašom Python skripte. - 3
Pripojte ho k inštancii requests.Session()
Inicializujte
s = requests.Session()a zavolajtes.proxies.update(proxies)pre trvalýKeep-Alivepooling. - 4
Overte výstupnú IP testovacou požiadavkou
Spustite
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())na potvrdenie aktívnej proxy IP adresy.
Často kladené otázky
Prečo kľúč 'https' používa 'http://user:pass@ip:port'?
Predpona http:// hovorí knižnici urllib3, ako sa pripojiť k samotnému proxy serveru (pomocou štandardného HTTP CONNECT), zatiaľ čo vaša koncový prenos na cieľovú https:// webovú stránku zostáva plne šifrovaný cez TLS.
Ako v Pythone rotovať 25 statických proxy naprieč požiadavkami?
Načítajte svojich 25 proxy URL adries do pool = itertools.cycle(PROXIES) a odovzdávajte proxies={'http': p, 'https': p} na požiadavku so šetrným obmedzovaním frekvencie požiadaviek na jednu IP adresu.
Meria VinaProxy spotrebu dát pri scraping skriptoch v Pythone?
Nie. Všetky balíky Dedicated IPv4 a Static ISP obsahujú neobmedzený mesačný prenos dát.
Vytvorte si fond pre Python scraping bez limitov
Okamžité Dedicated IPv4 a Static ISP proxy v 7 krajinách.
Kúpiť Python proxy