Как создать чекер прокси IPRoyal для HTTP, SOCKS5 и Shadowsocks
Узнайте, как проверять прокси IPRoyal с помощью собственного скрипта на Python. Проверяйте конечные точки HTTP, SOCKS5 и Shadowsocks на подключение, задержку и анонимность IP.
Обзор
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 делает его гибким выбором для этих задач, а чекер можно адаптировать к любому провайдеру, изменив формат списка прокси.