Гайды 3 мин чтения 11 просмотров

Использование прокси в Python с библиотекой requests

Использование прокси в Python с Requests для обхода блокировок и анонимности. Настройка прокси с GProxy для веб-парсинга.

Python

HTTP прокси — это промежуточный сервер, который принимает HTTP-запросы от клиента и перенаправляет их к целевому серверу. При этом целевой сервер видит IP-адрес прокси, а не ваш реальный адрес. Использование прокси в Python с библиотекой requests позволяет анонимизировать запросы, обходить географические ограничения и тестировать веб-приложения с разных IP-адресов.

Использование прокси с библиотекой requests в Python

Библиотека requests в Python предоставляет простой и удобный способ работы с HTTP-запросами. Встроенная поддержка прокси-серверов позволяет легко интегрировать их в ваши скрипты.

Установка библиотеки requests

Если у вас ещё не установлена библиотека requests, её можно установить с помощью pip:

pip install requests

Основной синтаксис использования прокси

Для использования прокси в requests, необходимо передать словарь с информацией о прокси в параметр proxies функции requests.get() (или requests.post(), requests.put() и т.д.).

import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies, timeout=5)
    response.raise_for_status()  # Raise HTTPError for bad responses (4xx or 5xx)
    print(response.status_code)
    print(response.content)
except requests.exceptions.RequestException as e:
    print(f"Ошибка при подключении: {e}")

В этом примере:

  • proxies - словарь, содержащий информацию о прокси для протоколов http и https.
  • http - прокси-сервер для HTTP-запросов.
  • https - прокси-сервер для HTTPS-запросов. Важно использовать HTTPS прокси для HTTPS соединений, чтобы сохранить шифрование.
  • timeout - устанавливает максимальное время ожидания ответа от сервера (в секундах). Это важно для предотвращения зависания скрипта, если прокси не отвечает.
  • response.raise_for_status() - проверяет, был ли запрос успешным (код 200-299). Если нет, выбрасывается исключение HTTPError.
  • requests.exceptions.RequestException - перехватывает любые ошибки, связанные с запросом (например, Timeout, ConnectionError, HTTPError).

Использование прокси с аутентификацией

Если ваш прокси-сервер требует аутентификации, вы можете указать имя пользователя и пароль в URL прокси:

import requests

proxies = {
  'http': 'http://user:password@10.10.1.10:3128',
  'https': 'http://user:password@10.10.1.10:1080',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies, timeout=5)
    response.raise_for_status()
    print(response.status_code)
    print(response.content)
except requests.exceptions.RequestException as e:
    print(f"Ошибка при подключении: {e}")

Использование SOCKS прокси

Библиотека requests не поддерживает SOCKS прокси "из коробки". Для работы с SOCKS прокси необходимо установить дополнительную библиотеку requests[socks]:

pip install requests[socks]

После установки можно использовать SOCKS прокси следующим образом:

import requests

proxies = {
  'http': 'socks5://user:password@10.10.1.10:1080',
  'https': 'socks5://user:password@10.10.1.10:1080',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies, timeout=5)
    response.raise_for_status()
    print(response.status_code)
    print(response.content)
except requests.exceptions.RequestException as e:
    print(f"Ошибка при подключении: {e}")

В этом примере используется SOCKS5 прокси с аутентификацией. Также поддерживаются SOCKS4 прокси, для этого нужно указать socks4://.

Сравнение HTTP и SOCKS прокси

Характеристика HTTP прокси SOCKS прокси
Поддерживаемые протоколы HTTP, HTTPS Любые TCP/UDP протоколы
Уровень анонимности Менее анонимный (обычно передает HTTP заголовки) Более анонимный (не передает HTTP заголовки)
Сложность настройки Проще в настройке Может потребовать дополнительную настройку
Случаи использования Веб-браузинг, обход географических ограничений Обход блокировок, туннелирование трафика, анонимность

Обработка ошибок при использовании прокси

При работе с прокси могут возникать различные ошибки. Важно правильно обрабатывать эти ошибки, чтобы ваш скрипт работал стабильно.

  • requests.exceptions.ProxyError: Ошибка, возникающая при подключении к прокси-серверу. Может быть вызвана неправильными настройками прокси или недоступностью прокси-сервера.
  • requests.exceptions.ConnectTimeout: Ошибка, возникающая, если не удается установить соединение с прокси-сервером в течение заданного времени.
  • requests.exceptions.ReadTimeout: Ошибка, возникающая, если не удается получить данные от прокси-сервера в течение заданного времени.
  • requests.exceptions.HTTPError: Ошибка, возникающая, если прокси-сервер возвращает HTTP-код ошибки (4xx или 5xx).

Пример обработки ошибок:

import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

try:
    response = requests.get('https://www.example.com', proxies=proxies, timeout=5)
    response.raise_for_status()
    print(response.status_code)
    print(response.content)
except requests.exceptions.ProxyError as e:
    print(f"Ошибка подключения к прокси: {e}")
except requests.exceptions.ConnectTimeout as e:
    print(f"Превышено время ожидания подключения к прокси: {e}")
except requests.exceptions.ReadTimeout as e:
    print(f"Превышено время ожидания ответа от прокси: {e}")
except requests.exceptions.HTTPError as e:
    print(f"HTTP ошибка: {e}")
except requests.exceptions.RequestException as e:
    print(f"Общая ошибка при запросе: {e}")

Советы по использованию прокси

  • Используйте HTTPS прокси для HTTPS соединений. Это обеспечит шифрование трафика между вашим скриптом и целевым сервером.
  • Устанавливайте таймауты. Это предотвратит зависание скрипта, если прокси не отвечает.
  • Обрабатывайте ошибки. Это позволит вашему скрипту корректно обрабатывать различные ситуации, связанные с прокси.
  • Тестируйте ваши прокси. Убедитесь, что прокси работают корректно, прежде чем использовать их в production-скриптах. Можно использовать сервисы типа https://httpbin.org/ip{rel="nofollow"} для проверки IP-адреса, который видит целевой сервер.
  • Используйте ротацию прокси. Если вы делаете много запросов, рекомендуется использовать несколько прокси и переключаться между ними, чтобы избежать блокировки со стороны целевого сервера.
  • Соблюдайте правила использования прокси. Не используйте прокси для незаконной деятельности.

Заключение

Использование прокси с библиотекой requests в Python — мощный инструмент для анонимизации запросов, обхода географических ограничений и тестирования веб-приложений. Правильная настройка и обработка ошибок обеспечивают стабильную и надежную работу ваших скриптов. Не забывайте о безопасности и этичном использовании прокси-серверов.

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

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира