Як використовувати проксі в 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+ 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) | Таймаут підключення 5 с та таймаут читання 15 с запобігають зависанню робочих потоків |
| Ротація пулу | itertools.cycle(proxy_list) | Рівномірно перемикає IP-адреси з вашого пулу виділених статичних IP |
Як уникнути типових помилок urllib3 та ProxyError
- Завжди використовуйте
http://(а неhttps://) як схему URL проксі для обох ключів словника'http'та'https', якщо тільки ваш порт проксі явно не вимагає TLS-over-TLS - Кодуйте спеціальні символи в паролях за допомогою URL-encode через
urllib.parse.quote(password, safe='') - Помилка
407 Proxy Authentication Requiredозначає, що ім'я користувача або пароль у вашому рядку URL не збігаються з обліковими даними в панелі керування - Працює аналогічно з
httpx.Client(proxy='http://user:pass@ip:port')та вaiohttpчерезsession.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