Нотатка · Проксі
Відкритий порт ще не означає робочий проксі
Спочатку хотів перевіряти кандидатів через 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=8Semaphore тримає максимум 100 одночасних перевірок. Для сотень і тисяч адрес цього вистачає. Перед сотнями тисяч доведеться замінити asyncio.gather() на bounded queue, інакше coroutine самі з’їдять пам’ять 🤷♂️
З proxy auth теж без магії. У snapshot лежить лише credential_ref, а secret дістається перед handshake:
auth = credentials.get(candidate.credential_ref)Немає посилання або пароль неправильний — кандидат вилітає. Тихого fallback без авторизації немає.