Skip to content
Intermediate / 3 min read

Как создать чекер прокси IPRoyal для HTTP, SOCKS5 и Shadowsocks

Узнайте, как проверять прокси IPRoyal с помощью собственного скрипта на Python. Проверяйте конечные точки HTTP, SOCKS5 и Shadowsocks на подключение, задержку и анонимность IP.

SOCKS5 Веб-скрейпинг Приватность/Анонимность Другое

Обзор

IPRoyal предоставляет резидентные, датацентровые и ISP-прокси с поддержкой протоколов HTTP, SOCKS5 и Shadowsocks. Независимо от того, занимаетесь ли вы парсингом, мониторингом результатов поиска или приватным просмотром, вам нужно знать, что ваши прокси работают, быстры и не раскрывают ваш реальный IP. Ручная проверка каждой конечной точки не масштабируется. В этом руководстве показано, как создать переиспользуемый чекер прокси на Python, который проверяет подключение, измеряет задержку и проверяет анонимность для любой конечной точки IPRoyal.

Предварительные требования

  • Python 3.8 или новее, установленный в вашей системе.
  • Менеджер пакетов pip.
  • Учётные данные прокси IPRoyal (хост, порт, имя пользователя, пароль). Их можно скопировать из панели управления IPRoyal.
  • Для тестирования Shadowsocks: клиент Shadowsocks, например shadowsocks-libev (Linux/macOS) или shadowsocks-rust.
  • Базовое знакомство с командной строкой и Python.

Что нужно проверять

Полезный чекер прокси должен отвечать на четыре вопроса:

  • Подключение: Может ли прокси выйти в публичный интернет?
  • Анонимность: Совпадает ли выходной IP, возвращаемый сервисом, с IP прокси (а не с вашим реальным IP)?
  • Задержка: Сколько времени занимает запрос от начала до конца?
  • Поведение DNS: Разрешаются ли DNS-запросы через прокси или локально? (Утечка раскрывает ваше реальное местоположение.)

Разные протоколы требуют немного разного подхода. В таблице ниже описаны подходы для каждого протокола IPRoyal.

Протокол Схема Python Обработка DNS Аутентификация
HTTP http:// Локально или через прокси Имя пользователя/пароль в URL или заголовке
HTTPS http:// (CONNECT) Локально или через прокси Имя пользователя/пароль в URL или заголовке
SOCKS5 socks5h:// Удалённо (через прокси) Имя пользователя/пароль в URL
Shadowsocks Локальный SOCKS5 после ss-local Удалённо Пароль в конфигурации

Шаги

1. Установите зависимости Python

Библиотека requests работает с прокси HTTP и HTTPS. Для SOCKS5 также нужны requests[socks] и pysocks.

pip install requests requests[socks] pysocks

2. Соберите конечные точки прокси IPRoyal

Войдите в панель управления IPRoyal и скопируйте список прокси. Большинство списков содержат строки в формате:

host:port:username:password

Сохраните список в текстовый файл, например proxies.txt. Если вы используете другой формат, измените код разбора на следующих шагах.

3. Напишите базовый чекер HTTP-прокси

Создайте файл с именем checker.py. Следующий фрагмент проверяет один HTTP-прокси и выводит возвращённый IP.

import requests
from requests.exceptions import ProxyError, ConnectTimeout

proxy_url = "http://username:password@host:port"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

try:
    response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
    response.raise_for_status()
    print("Proxy works. Your IP appears as:", response.json()["origin"])
except (ProxyError, ConnectTimeout) as e:
    print("Proxy failed:", e)

Замените username, password, host и port на ваши учётные данные IPRoyal.

4. Расширьте чекер для SOCKS5

Для SOCKS5 измените схему на socks5h://. Буква h указывает requests разрешать DNS через прокси, что предотвращает утечки DNS.

proxy_url = "socks5h://username:password@host:port"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

Запустите тот же блок запроса. Если вы видите ошибку Missing dependencies for SOCKS support, переустановите requests[socks].

5. Добавьте измерение задержки и проверку IP

Измените скрипт, чтобы замерять время запроса и сравнивать возвращённый IP с ожидаемым IP прокси. Вы можете сохранить ожидаемый IP в списке прокси или получать его отдельно.

import time

start = time.time()
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
elapsed = time.time() - start
returned_ip = response.json()["origin"]
print(f"Latency: {elapsed:.2f}s, Returned IP: {returned_ip}")

Если возвращённый IP совпадает с вашим реальным IP, прокси не анонимизирует ваш трафик. Проверьте настройки аутентификации и протокола.

6. Проверьте конечные точки Shadowsocks

Shadowsocks — это туннель, а не прямой прокси-протокол. Чтобы проверить конечную точку IPRoyal Shadowsocks, запустите локальный клиент Shadowsocks, который предоставляет SOCKS5-прокси, затем проверьте этот локальный SOCKS5-адрес.

Установите shadowsocks-libev в Linux или macOS (через Homebrew). Затем создайте файл конфигурации ss-local.json:

{
  "server": "your_iproyal_ss_server",
  "server_port": 8388,
  "local_address": "127.0.0.1",
  "local_port": 1080,
  "password": "your_password",
  "method": "aes-256-gcm"
}

Запустите клиент:

ss-local -c ss-local.json

Теперь используйте socks5h://127.0.0.1:1080 как прокси в скрипте чекера. Если соединение работает, туннель Shadowsocks функционирует.

7. Создайте пакетный чекер с ротацией и логированием

Для нескольких прокси разберите ваш файл proxies.txt, пройдитесь по каждой конечной точке и запишите результаты в CSV-файл. Это поможет выявить мёртвые IP и отслеживать производительность со временем.

import csv

with open("proxies.txt") as f:
    lines = [line.strip() for line in f if line.strip()]

results = []
for line in lines:
    host, port, user, pwd = line.split(":")
    proxy_url = f"socks5h://{user}:{pwd}@{host}:{port}"
    proxies = {"http": proxy_url, "https": proxy_url}
    try:
        start = time.time()
        r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
        elapsed = time.time() - start
        ip = r.json()["origin"]
        results.append((host, port, "OK", f"{elapsed:.2f}", ip))
    except Exception as e:
        results.append((host, port, "FAIL", "", str(e)))

with open("proxy_report.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Host", "Port", "Status", "Latency(s)", "Returned IP/Error"])
    writer.writerows(results)

Запускайте скрипт периодически, чтобы поддерживать здоровый пул прокси.

Устранение неполадок

  • 407 Proxy Authentication Required: Проверьте имя пользователя и пароль. Если ваш пароль содержит специальные символы, такие как @ или :, закодируйте их в URL (например, @ становится %40).
  • Тайм-аут соединения: Проверьте, что хост и порт указаны верно, и что ваш IP внесён в белый список в панели управления IPRoyal, если это требуется вашим тарифом.
  • Ошибки SOCKS5: Убедитесь, что requests[socks] установлен. Используйте socks5h:// для удалённого разрешения DNS; socks5:// разрешает DNS локально.
  • Клиент Shadowsocks не запускается: Убедитесь, что метод шифрования совпадает с вашей конфигурацией IPRoyal, и что порт сервера открыт. Проверьте с помощью ss-local -c ss-local.json -v для подробного вывода.
  • Утечки DNS: Используйте socks5h:// и проверяйте с помощью сервиса тестирования утечек DNS через прокси. Если местоположение DNS-резолвера отличается от местоположения прокси, DNS утекает.
  • Ошибки сертификата HTTPS: Некоторые прокси перехватывают TLS. Для парсинга предпочитайте резидентные или ISP-прокси, которые поддерживают сквозной HTTPS без перехвата.

Итог

Вы создали чекер прокси на Python, который проверяет конечные точки HTTP, SOCKS5 и Shadowsocks от IPRoyal. Скрипт измеряет задержку, проверяет выходной IP и записывает результаты для пакетного анализа. Регулярные проверки помогают исключать мёртвые прокси из ротации и поддерживать надёжные процессы парсинга или конфиденциальности. Широкая поддержка протоколов IPRoyal делает его гибким выбором для этих задач, а чекер можно адаптировать к любому провайдеру, изменив формат списка прокси.