Перейти до вмісту
Гайды 4 хв читання 104 переглядів

Використання проксі у Python з бібліотекою requests

Дізнайтеся, як використовувати проксі у бібліотеці requests Python для безпечного веб-скрейпінгу. Навчіться впроваджувати GProxy та обходити обмеження.

Python
Використання проксі у Python з бібліотекою requests

HTTP-проксі — це проміжний сервер, який діє як шлюз між вами та інтернетом. Коли ви використовуєте проксі, ваші запити спочатку маршрутизуються через проксі-сервер, перш ніж досягти цільового сервера. Це приховує вашу IP-адресу та може використовуватися для різних цілей, таких як обхід географічних обмежень, веб-скрейпінг та підвищення безпеки. Бібліотека Python requests дозволяє легко використовувати проксі у ваших HTTP-запитах.

Навіщо використовувати проксі з бібліотекою requests?

Є кілька ключових причин, чому ви можете захотіти використовувати проксі з бібліотекою requests:

  • Анонімність: Проксі маскують вашу IP-адресу, ускладнюючи відстеження вашої онлайн-активності.
  • Обхід географічних обмежень: Отримуйте доступ до контенту, який обмежений певними регіонами, використовуючи проксі-сервер, розташований у цьому регіоні.
  • Веб-скрейпінг: Уникайте блокування під час скрейпінгу веб-сайтів, чергуючи різні проксі-сервери. Багато веб-сайтів застосовують обмеження швидкості або блокування IP-адрес, щоб запобігти зловживанню їхніми даними.
  • Балансування навантаження: Розподіляйте запити між кількома серверами для покращення продуктивності та надійності.
  • Безпека: Проксі можуть додати додатковий рівень безпеки, діючи як буфер між вашим комп'ютером та інтернетом. Вони також можуть фільтрувати шкідливий контент.
  • Тестування: Імітуйте доступ користувачів з різних місць для цілей тестування.

Налаштування проксі в requests

Бібліотека requests надає простий спосіб налаштування проксі за допомогою параметра proxies у функціях запитів (get, post, put, delete тощо). Параметр proxies приймає словник, де ключами є протоколи (наприклад, 'http', 'https'), а значеннями — URL-адреси проксі.

Базова конфігурація проксі

Ось базовий приклад використання проксі з бібліотекою requests:

import requests

proxies = {
  'http': 'http://your_proxy_address:port',
  'https': 'https://your_proxy_address:port',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies)
    response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
    print(response.status_code)
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

Замініть your_proxy_address та port на фактичну адресу та порт вашого проксі-сервера. Метод raise_for_status() є вирішальним для обробки помилок; він викличе виняток, якщо код стану HTTP вказує на помилку (наприклад, 404 Not Found, 500 Internal Server Error).

Використання різних проксі для HTTP та HTTPS

Ви також можете вказати різні проксі для HTTP- та HTTPS-трафіку:

import requests

proxies = {
  'http': 'http://http_proxy_address:port',
  'https': 'https://https_proxy_address:port',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies)
    response.raise_for_status()
    print(response.status_code)
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

Автентифікація проксі

Багато проксі-серверів вимагають автентифікації. Ви можете включити ім'я користувача та пароль в URL-адресу проксі:

import requests

proxies = {
  'http': 'http://username:password@your_proxy_address:port',
  'https': 'https://username:password@your_proxy_address:port',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies)
    response.raise_for_status()
    print(response.status_code)
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

Крім того, ви можете використовувати модуль requests.auth для більш складних схем автентифікації. Однак для базової автентифікації за іменем користувача/паролем вбудовування облікових даних в URL-адресу зазвичай достатньо.

SOCKS-проксі

Бібліотека requests підтримує SOCKS-проксі, але вам потрібно буде встановити додатковий пакет requests[socks].

pip install requests[socks]

Після встановлення ви можете використовувати SOCKS-проксі таким чином:

import requests

proxies = {
  'http': 'socks5://user:pass@host:port',
  'https': 'socks5://user:pass@host:port'
}

try:
    response = requests.get('https://www.example.com', proxies=proxies)
    response.raise_for_status()
    print(response.status_code)
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

Ви можете використовувати схеми socks4 або socks5. Якщо для вашого SOCKS-проксі не потрібні ім'я користувача/пароль, просто опустіть їх з URL-адреси (наприклад, 'socks5://host:port').

Порівняння типів проксі

Ось порівняння різних типів проксі:

Функція HTTP-проксі HTTPS-проксі SOCKS-проксі
Протокол HTTP HTTPS SOCKS (4, 5)
Шифрування Без шифрування (якщо цільовий сервер не HTTPS) Шифрує трафік до проксі-сервера Підтримує шифрування (SOCKS5)
Варіанти використання Веб-перегляд, доступ до HTTP-сайтів Веб-перегляд, доступ до HTTPS-сайтів Універсальний, підтримує різні протоколи (HTTP, HTTPS, FTP тощо)
Безпека Менш безпечний Більш безпечний Більш безпечний (особливо з SOCKS5)
Складність Простий у налаштуванні Простий у налаштуванні Може бути складнішим у налаштуванні
Прикладний рівень Розуміє протокол HTTP Розуміє протокол HTTP Працює на транспортному рівні

Ротація проксі для веб-скрейпінгу

Під час веб-скрейпінгу ротація через кілька проксі є вирішальною, щоб уникнути блокування вашої IP-адреси. Ось як ви можете реалізувати ротацію проксі:

import requests
import random

proxy_list = [
  'http://user1:pass1@proxy1.com:8000',
  'http://user2:pass2@proxy2.com:8001',
  'http://user3:pass3@proxy3.com:8002',
]

def get_page(url):
    proxy = random.choice(proxy_list)
    proxies = {'http': proxy, 'https': proxy}
    try:
        response = requests.get(url, proxies=proxies, timeout=10)  # Add timeout
        response.raise_for_status()
        return response.text
    except requests.exceptions.RequestException as e:
        print(f"Error using proxy {proxy}: {e}")
        return None

url = 'https://www.example.com'
content = get_page(url)

if content:
    print("Successfully retrieved content.")
    # Process the content here
else:
    print("Failed to retrieve content.")

У цьому прикладі:

  • Підтримується список проксі-серверів.
  • Функція random.choice() вибирає випадковий проксі зі списку для кожного запиту.
  • До функції requests.get() додано timeout, щоб запобігти безкінечному зависанню скрипта, якщо проксі не відповідає.
  • Реалізовано обробку помилок для перехоплення винятків та повторної спроби з іншим проксі.

Пам'ятайте, що потрібно витончено обробляти помилки та реалізовувати логіку повторних спроб з різними проксі, якщо запит не вдається. Розгляньте можливість використання більш надійної бібліотеки для керування проксі для великомасштабних проектів скрейпінгу.

Поширені проблеми та їх усунення

  • Помилки автентифікації проксі: Перевірте ім'я користувача та пароль. Переконайтеся, що вони правильно закодовані в URL-адресі проксі.
  • Помилки підключення: Перевірте, чи працює проксі-сервер і чи доступний він з вашої мережі. Перевірте налаштування брандмауера.
  • Таймаути: Збільште значення timeout у функції requests.get(). Стандартний таймаут може бути занадто коротким для деяких проксі-серверів.
  • Заблоковані запити: Цільовий веб-сайт може блокувати IP-адресу проксі-сервера. Спробуйте використовувати інший проксі або список проксі, що обертаються.
  • Помилки SOCKS-проксі: Переконайтеся, що ви встановили додатковий пакет requests[socks]. Перевірте, чи правильно налаштований SOCKS-проксі-сервер.

Висновок

Використання проксі з бібліотекою Python requests є потужною технікою для різних завдань, включаючи веб-скрейпінг, доступ до географічно обмеженого контенту та підвищення безпеки. Розуміючи, як налаштовувати проксі, обробляти автентифікацію та реалізовувати ротацію проксі, ви можете ефективно використовувати проксі у своїх програмах Python. Пам'ятайте, що потрібно витончено обробляти помилки та вибирати відповідний тип проксі для ваших конкретних потреб.

Оновлено: 26.01.2026
Назад до категорії

Читайте також

Гайды 1 хв

Налаштування проксі в Cypress для E2E тестування

Налаштування проксі в Cypress: змінні HTTP_PROXY, cy-proxy-middleware та тестування геозалежного контенту.

Гайды 1 хв

Як автоматизувати купівлю проксі через API

Автоматизація купівлі та управління проксі через API провайдерів: інтеграція, моніторинг використання та автопоновлення.

Гайды 1 хв

Створення інформаційної панелі моніторингу проксі в Grafana

Покрокове створення інформаційної панелі для моніторингу проксі в Grafana: метрики,

Гайды 1 хв

Як тестувати проксі перед покупкою

Чек-лист тестування проксі перед покупкою: швидкість, стабільність, анонімність, гео та сумісність з ціллю

Гайды 1 хв

Як налаштувати липкі сесії через проксі

Липкі сесії: підтримка однієї IP-адреси протягом усієї сесії, налаштовуються через провайдера та самостійно.

Гайды 1 хв

Використання проксі з Camoufox

Camoufox — це модифікований Firefox для обходу антиботів. Налаштування проксі, відбиток та режим невидимості.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.