При работе с SOCKS5-прокси нередко возникает задача быстро проверить их работоспособность и убедиться, что трафик действительно проходит через сеть Tor. Ручная проверка десятков или сотен прокси занимает много времени, поэтому удобнее автоматизировать этот процесс.

В этой статье мы рассмотрим создание собственного Tor Proxy Checker на Node.js с использованием библиотек axios и socks-proxy-agent.
Устанавливаем необходимые библиотеки:
Каждая строка содержит:
Пустые строки и строки, начинающиеся с символа #, игнорируются.
Сервис возвращает информацию о текущем IP-адресе и сообщает, принадлежит ли он сети Tor.
Если поле IsTor содержит значение true, значит прокси действительно использует сеть Tor.
Пример ответа:
Поэтому список разбивается на группы (чанки), которые проверяются параллельно:
Количество одновременно выполняемых проверок задается параметром конкурентности.
Например:
где:
Это удобно для дальнейшего использования в других проектах.
Такая статистика позволяет быстро оценить качество списка прокси.

Если кому интересно, могу поделиться кодом.
Полученный Tor Proxy Checker позволяет быстро фильтровать рабочие прокси, измерять их производительность и автоматически сохранять результаты для дальнейшего использования.

В этой статье мы рассмотрим создание собственного Tor Proxy Checker на Node.js с использованием библиотек axios и socks-proxy-agent.
Что умеет скрипт
Мой инструмент позволяет:- Проверять SOCKS5-прокси с авторизацией.
- Определять, проходит ли трафик через сеть Tor.
- Получать внешний IP-адрес узла выхода Tor.
- Измерять время отклика прокси.
- Выполнять массовую проверку с заданной конкурентностью.
- Сохранять результаты в JSON и TXT файлы.
- Выводить подробную статистику по итогам проверки.
Установка зависимостей
Создаем новый проект:
Код:
npm init -y
Код:
npm install axios socks-proxy-agent
Формат списка прокси
Прокси хранятся в файле proxies.txt.Каждая строка содержит:
Код:
ip:port:username:password
Пример:
1.2.3.4:1080:user1:pass1
5.6.7.8:1080:user2:pass2
10.0.0.1:9050:user3:pass3
Принцип работы
Для каждой записи выполняются следующие действия:- Формируется SOCKS5 URL с логином и паролем.
- Создается SOCKS-прокси-агент.
- Выполняется HTTPS-запрос к сервису проверки Tor.
- Анализируется ответ.
- Определяется статус прокси:
- WORKING
- NOT_TOR
- TIMEOUT
- ERROR
Проверка через Tor
Основная идея заключается в обращении к сервису проверки сети Tor:
Код:
const response = await axios.get(
'https://check.torproject.org/api/ip',
{
httpsAgent: agent,
timeout: 10000
}
);
Если поле IsTor содержит значение true, значит прокси действительно использует сеть Tor.
Пример ответа:
Код:
{
"IP": "185.xxx.xxx.xxx",
"IsTor": true
}
Параллельная проверка
При большом количестве прокси последовательная проверка работает слишком медленно.Поэтому список разбивается на группы (чанки), которые проверяются параллельно:
Код:
const chunkResults = await Promise.all(
chunk.map(proxy =>
checkProxy(proxy, timeout)
)
);
Например:
Код:
node tor-checker.js proxies.txt 50 15000
- 50 — количество одновременных соединений;
- 15000 — таймаут в миллисекундах.
Сохранение результатов
После завершения проверки создаются два файла.JSON-отчет
Содержит подробную информацию о каждом прокси:
Код:
{
"host": "1.2.3.4",
"port": 1080,
"status": "WORKING",
"torIp": "185.xxx.xxx.xxx",
"responseTime": 812
}
TXT-файл
Содержит только рабочие прокси:
Код:
1.2.3.4:1080:user1:pass1
5.6.7.8:1080:user2:pass2
Вывод статистики
По завершении проверки отображается сводка:
Код:
============================================================
СТАТИСТИКА
============================================================
Всего: 500
Рабочих: 126
Не Tor: 18
Таймаутов: 274
Ошибок: 82
============================================================

Возможные улучшения
Скрипт можно дополнить следующими возможностями:- Повторная проверка нестабильных прокси.
- Автоматическое определение страны узла выхода.
- Сортировка по скорости.
- Экспорт в CSV.
- Поддержка IPv6.
- Работа через HTTP и HTTPS прокси.
- Использование очередей задач для десятков тысяч прокси.
- Ведение логов в отдельный файл.
Заключение
Node.js отлично подходит для массовой сетевой проверки благодаря асинхронной модели работы. Используя axios и socks-proxy-agent, можно за несколько десятков строк кода создать удобный инструмент для проверки SOCKS5-прокси и определения их принадлежности к сети Tor.Если кому интересно, могу поделиться кодом.
Полученный Tor Proxy Checker позволяет быстро фильтровать рабочие прокси, измерять их производительность и автоматически сохранять результаты для дальнейшего использования.