Како користити прокси у Python Requests (HTTP/HTTPS и пуловање сесија)
Updated:
Python библиотека requests прихвата аутентификоване VinaProxy проксије путем proxies речника који мапира и 'http' и 'https' шеме на http://user:pass@ip:port. Повезивање тог речника са перзистентном requests.Session() поново користи основне TCP сокете за брзо веб скрејповање уз минимално оптерећење.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 VND
- 5+ IP-ја35.000 VND
- 10+ IP-ја25.000 VND
- 20+ IP-ја25.000 VND
- 50+ IP-ја25.000 VND
- 100+ IP-ја25.000 VND
- 200+ IP-ја25.000 VND
- 500+ IP-ја25.000 VND
- 1000+ IP-ја22.000 VND
- 2000+ IP-ја20.000 VND
- 1 IP40.000 VND
- 5+ IP-ја35.000 VND
- 10+ IP-ја25.000 VND
- 20+ IP-ја25.000 VND
- 50+ IP-ја25.000 VND
- 100+ IP-ја25.000 VND
- 200+ IP-ја25.000 VND
- 500+ IP-ја25.000 VND
- 1000+ IP-ја22.000 VND
- 2000+ IP-ја20.000 VND
Форматирање речника proxies и поновна употреба сесија
Позивање 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 проксија и за'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 синтаксу
Користите наш Конвертер формата проксија да трансформишете своју 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-Aliveпуловање. - 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 скрипте за скрејповање?
Не. Сви Dedicated IPv4 и Static ISP планови укључују неограничен месечни саобраћај.
Направите Python скрејпинг пул без ограничења протока
Инстант Dedicated IPv4 и Static ISP проксији у 7 земаља.
Купите Python проксије