Как да използвате прокси в Python Requests (HTTP/HTTPS и сесийни пулове)
Updated:
Библиотеката requests в Python приема проксита от 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 синтаксис
Използвайте нашия 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-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