Создаем Tor Proxy Checker на Node.js

sedoj-enot

Moderator
Команда форума
ACTIVE NODE
При работе с SOCKS5-прокси нередко возникает задача быстро проверить их работоспособность и убедиться, что трафик действительно проходит через сеть Tor. Ручная проверка десятков или сотен прокси занимает много времени, поэтому удобнее автоматизировать этот процесс.
чекер.png
В этой статье мы рассмотрим создание собственного Tor Proxy Checker на Node.js с использованием библиотек axios и socks-proxy-agent.



Что умеет скрипт​

Мой инструмент позволяет:

  • Проверять SOCKS5-прокси с авторизацией.
  • Определять, проходит ли трафик через сеть Tor.
  • Получать внешний IP-адрес узла выхода Tor.
  • Измерять время отклика прокси.
  • Выполнять массовую проверку с заданной конкурентностью.
  • Сохранять результаты в JSON и TXT файлы.
  • Выводить подробную статистику по итогам проверки.
Такой инструмент может быть полезен администраторам, исследователям сетей, разработчикам и всем, кто работает с большим количеством Tor-прокси.

Установка зависимостей​

Создаем новый проект:

Код:
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
Пустые строки и строки, начинающиеся с символа #, игнорируются.

Принцип работы​

Для каждой записи выполняются следующие действия:

  1. Формируется SOCKS5 URL с логином и паролем.
  2. Создается SOCKS-прокси-агент.
  3. Выполняется HTTPS-запрос к сервису проверки Tor.
  4. Анализируется ответ.
  5. Определяется статус прокси:
    • WORKING
    • NOT_TOR
    • TIMEOUT
    • ERROR

Проверка через Tor​

Основная идея заключается в обращении к сервису проверки сети Tor:

Код:
const response = await axios.get(
    'https://check.torproject.org/api/ip',
{
httpsAgent: agent,
timeout: 10000
}
);
Сервис возвращает информацию о текущем IP-адресе и сообщает, принадлежит ли он сети Tor.

Если поле 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
============================================================
Такая статистика позволяет быстро оценить качество списка прокси.

Снимок экрана от 2026-06-10 17-18-04.png

Возможные улучшения​

Скрипт можно дополнить следующими возможностями:

  • Повторная проверка нестабильных прокси.
  • Автоматическое определение страны узла выхода.
  • Сортировка по скорости.
  • Экспорт в CSV.
  • Поддержка IPv6.
  • Работа через HTTP и HTTPS прокси.
  • Использование очередей задач для десятков тысяч прокси.
  • Ведение логов в отдельный файл.

Заключение​

Node.js отлично подходит для массовой сетевой проверки благодаря асинхронной модели работы. Используя axios и socks-proxy-agent, можно за несколько десятков строк кода создать удобный инструмент для проверки SOCKS5-прокси и определения их принадлежности к сети Tor.


Если кому интересно, могу поделиться кодом.

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