Paano gumamit ng proxy sa Python Requests (HTTP/HTTPS at Session pooling)
Updated:
Tinatanggap ng requests library ng Python ang mga authenticated na VinaProxy proxy sa pamamagitan ng proxies dictionary na nagma-map ng parehong 'http' at 'https' scheme sa http://user:pass@ip:port. Ang pagkabit ng dictionary na iyon sa isang persistent na requests.Session() ay muling gumagamit ng pinagbabatayang mga TCP socket para sa mabilis at mababang-overhead na web scraping.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP₫40,000
- 5+ na IP₫35,000
- 10+ na IP₫25,000
- 20+ na IP₫25,000
- 50+ na IP₫25,000
- 100+ na IP₫25,000
- 200+ na IP₫25,000
- 500+ na IP₫25,000
- 1000+ na IP₫22,000
- 2000+ na IP₫20,000
- 1 IP₫40,000
- 5+ na IP₫35,000
- 10+ na IP₫25,000
- 20+ na IP₫25,000
- 50+ na IP₫25,000
- 100+ na IP₫25,000
- 200+ na IP₫25,000
- 500+ na IP₫25,000
- 1000+ na IP₫22,000
- 2000+ na IP₫20,000
Pag-format ng proxies dictionary at muling paggamit ng Sessions
Ang pagtawag sa requests.get() sa bawat URL ay lumilikha ng bagong TCP connection at TLS handshake sa bawat pagkakataon. Ang pag-bind ng iyong proxy sa session = requests.Session() ay nagpapanatiling bukas sa proxy tunnel sa magkakasunod na request.
| Parameter ng Requests | Inirerekomendang Syntax | Teknikal na Layunin |
|---|---|---|
'http' key | 'http://user:pass@ip:port' | Nagruruta ng plain HTTP requests sa pamamagitan ng proxy |
'https' key | 'http://user:pass@ip:port' | Gumagamit ng http:// scheme upang maglabas ang urllib3 ng HTTP CONNECT tunnel para sa TLS |
timeout tuple | timeout=(5, 15) | Ang 5s connect timeout at 15s read timeout ay pumipigil sa mga nag-hang na worker thread |
| Rotation ng pool | itertools.cycle(proxy_list) | Pantay-pantay na umiikot sa iyong nakalaang static IP pool |
Pag-iwas sa mga karaniwang pagkakamali sa urllib3 at ProxyError
- Laging gamitin ang
http://(hindihttps://) bilang proxy URL scheme para sa parehong'http'at'https'dictionary key maliban kung tahasang nangangailangan ang iyong proxy port ng TLS-over-TLS - I-URL-encode ang mga espesyal na character sa mga password gamit ang
urllib.parse.quote(password, safe='') - Ang error na
407 Proxy Authentication Requireday nangangahulugang ang username o password sa iyong URL string ay hindi tumugma sa iyong mga kredensyal sa dashboard - Gumagana nang pareho sa
httpx.Client(proxy='http://user:pass@ip:port')ataiohttpsession.get(url, proxy=...)
Sunod-sunod na hakbang
- 1
I-convert ang ip:port:user:pass sa URL syntax
Gamitin ang aming Proxy Format Converter upang gawing
http://user:pass@ip:portstring ang iyong listahan ng VinaProxy. - 2
Tukuyin ang proxies dictionary
I-set ang
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}sa iyong Python script. - 3
Ikabit sa isang requests.Session() instance
I-initialize ang
s = requests.Session()at tawagan angs.proxies.update(proxies)para sa persistent naKeep-Alivepooling. - 4
I-verify ang exit IP gamit ang isang test request
Patakbuhin ang
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())upang kumpirmahin ang aktibong proxy IP.
Mga madalas itanong
Bakit gumagamit ang 'https' key ng 'http://user:pass@ip:port'?
Sinasabi ng http:// prefix sa urllib3 kung paano kumonekta sa proxy server mismo (gamit ang karaniwang HTTP CONNECT), habang ang iyong end-to-end traffic patungo sa target na https:// website ay nananatiling ganap na TLS-encrypted.
Paano ako magro-rotate ng 25 static proxy sa mga request sa Python?
I-load ang iyong 25 proxy URL sa pool = itertools.cycle(PROXIES) at ipasa ang proxies={'http': p, 'https': p} sa bawat request na may magalang na per-IP rate limiting.
Sinusukat ba ng VinaProxy ang bandwidth sa mga Python scraping script?
Hindi. Lahat ng Dedicated IPv4 at Static ISP plan ay may kasamang walang limitasyong buwanang trapiko.
Bumuo ng unmetered na Python scraping pool
Agarang Dedicated IPv4 at Static ISP proxies sa 7 bansa.
Bumili ng Python Proxies