Како да користите прокси во Python Requests (HTTP/HTTPS и Session pooling)
Updated:
Библиотеката requests во Python прифаќа автентицирани VinaProxy проксија преку proxies речник што ги мапира и 'http' и 'https' шемите кон http://user:pass@ip:port. Додавањето на тој речник на постојан requests.Session() повторно ги користи основните TCP сокети за брз web scraping со минимално оптоварување.
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
Форматирање на речникот proxies и повторна употреба на Sessions
Повикувањето на requests.get() за секое URL создава сосема нова TCP врска и TLS ракување секојпат. Поврзувањето на вашето прокси со session = requests.Session() го одржува отворен прокси-тунелот низ последователните барања.
| Параметар на Requests | Препорачана синтакса | Техничка намена |
|---|---|---|
'http' клуч | 'http://user:pass@ip:port' | Ги пренасочува обичните HTTP барања преку проксито |
'https' клуч | 'http://user:pass@ip:port' | Користи http:// шема за urllib3 да воспостави HTTP CONNECT тунел за TLS |
timeout торка | timeout=(5, 15) | Временско ограничување од 5s за поврзување и 15s за читање спречува блокирање на работните нишки |
| Ротација на базен | itertools.cycle(proxy_list) | Циклично се менува рамномерно низ вашиот базен со посветени статички IP адреси |
Избегнување вообичаени стапици со urllib3 и ProxyError
- Секогаш користете
http://(неhttps://) како шема за прокси URL за двата клучa'http'и'https'во речникот, освен ако вашата прокси порта изречно не бара TLS-over-TLS - URL-кодирајте ги специјалните знаци во лозинките користејќи
urllib.parse.quote(password, safe='') - Грешката
407 Proxy Authentication Requiredзначи дека корисничкото име или лозинката во вашата URL низа не се совпаѓаат со податоците за најава од вашата контролна табла - Функционира идентично и со
httpx.Client(proxy='http://user:pass@ip:port')и соaiohttpsession.get(url, proxy=...)
Чекор по чекор
- 1
Конвертирајте ip:port:user:pass во URL синтакса
Користете го нашиот Proxy Format Converter за да ја трансформирате вашата листа од VinaProxy во
http://user:pass@ip:portнизи. - 2
Дефинирајте го речникот proxies
Поставете
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}во вашата Python скрипта. - 3
Прикачете го на инстанца од requests.Session()
Иницијализирајте
s = requests.Session()и повикајтеs.proxies.update(proxies)за постојанKeep-Alivepooling. - 4
Потврдете ја излезната IP адреса со тестно барање
Извршете
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())за да ја потврдите активната прокси IP адреса.
Често поставувани прашања
Зошто клучот 'https' користи 'http://user:pass@ip:port'?
Префиксот http:// му кажува на urllib3 како да се поврзе со самиот прокси-сервер (користејќи стандарден HTTP CONNECT), додека вашиот сообраќај од крај до крај кон целната https:// веб-страница останува целосно TLS-енкриптиран.
Како да ротирам 25 статички проксија низ барањата во Python?
Вчитајте ги вашите 25 прокси URL адреси во pool = itertools.cycle(PROXIES) и проследувајте proxies={'http': p, 'https': p} по барање со умерено ограничување на стапката по IP.
Дали VinaProxy го мери пропусниот опсег за Python scraping скрипти?
Не. Сите Dedicated IPv4 и Static ISP планови вклучуваат неограничен месечен сообраќај.
Изградете Python scraping базен со неограничен сообраќај
Инстант Dedicated IPv4 и Static ISP проксија низ 7 земји.
Купете Python проксија