← Усі нотатки

Нотатка · Проксі

Відкритий порт ще не означає робочий проксі

У Telegram:

Спочатку хотів перевіряти кандидатів через nc -z. Порт відкрився — значить проксі живий. Логіка залізна. Майже 😅

Socket може прийняти з’єднання, а потім відмовити на HTTP CONNECT, зламати SOCKS handshake або просто не дістатися цільового сервера.

Тому validator проходить весь маршрут:

candidate
  → HTTP CONNECT / SOCKS4 / SOCKS5 handshake
  → echo endpoint
  → HTTP status + JSON + latency

Щоб під час перевірки не покласти власний gateway, обмежив конкуренцію:

VALIDATION_CONCURRENCY=100
PROXY_VALIDATION_TIMEOUT_SECONDS=8

Semaphore тримає максимум 100 одночасних перевірок. Для сотень і тисяч адрес цього вистачає. Перед сотнями тисяч доведеться замінити asyncio.gather() на bounded queue, інакше coroutine самі з’їдять пам’ять 🤷‍♂️

З proxy auth теж без магії. У snapshot лежить лише credential_ref, а secret дістається перед handshake:

auth = credentials.get(candidate.credential_ref)

Немає посилання або пароль неправильний — кандидат вилітає. Тихого fallback без авторизації немає.