Скрипт проверки доступности доменов в зоне ru

Проверка доступности доменов в зоне .ru через обычный WHOIS при объеме от 1000 запросов в час приводит к блокировке IP-адреса в 90% случаев из-за жестких лимитов регулятора. Для автоматизации подбора имен или мониторинга конкурентов требуется архитектура с ротацией прокси и обработкой специфических статус-кодов сервера WHOIS.

Проблема лимитов и блокировок WHOIS

Стандартный порт 43 для зоны .ru имеет жесткий rate limit: при превышении порога в 20-50 запросов в минуту (в зависимости от чистоты вашего IP) сервер начинает возвращать пустые ответы или временно блокирует соединение на срок от 1 до 24 часов. Использование одного сервера для проверки списка из 10 000 доменов займет около 15-20 часов при условии соблюдения пауз в 2-3 секунды между запросами.

Кейс: при попытке проверить 500 доменов за 10 минут с одного VPS в дата-центре Hetzner, доступ к серверу whois.tnic.ru был закрыт через 120 запросов. Экспертный вывод: для серьезного парсинга необходимо использовать пул из минимум 10-15 качественных резидентских прокси с ротацией каждые 3-5 запросов.

Техническая реализация на PHP: нюансы

Ошибкой новичков является использование функции fsockopen() без настройки таймаутов и обработки исключений. Правильный скрипт должен работать через сокеты с таймаутом не более 2-3 секунд, иначе один «зависший» домен затормозит весь поток. Важно парсить ответ регулярными выражениями, ориентируясь на строку 'status: free' или 'status: available'.

Нюанс: в зоне .ru статус домена может меняться с 'free' на 'pendingDelete' (ожидание удаления). Разница в цене между перехватом дропа и регистрацией нового имени составляет от 200 до 15 000 рублей в зависимости от ценности ключа. Экспертный вывод: скрипт обязан различать абсолютно свободный домен и домен в стадии удаления, чтобы не упустить выгодный лот.

Оптимизация скорости через многопоточность

Линейный перебор массива доменов в PHP крайне неэффективен. Для ускорения процесса следует использовать расширение curl_multi или библиотеку ReactPHP, что позволяет выполнять до 10-20 запросов параллельно. При использовании пула прокси скорость проверки возрастает с 10 до 200-300 доменов в минуту без риска блокировки.

Сравнение: линейный скрипт обрабатывает 1000 имен за ~40 минут, многопоточный с прокси — за 4-6 минут. Однако здесь возникает риск, что Безопасность готовых PHP-скриптов будет нарушена из-за утечки API-ключей прокси в открытом коде. Экспертный вывод: используйте асинхронный подход только при наличии внешнего менеджера прокси, чтобы не перегружать CPU сервера.

Альтернатива: использование API регистраторов

Если объем проверок не превышает 500-1000 в сутки, выгоднее использовать API крупных регистраторов (Reg.ru, Nic.ru). Стоимость запроса через API обычно бесплатна при наличии депозита, но лимиты там еще жестче, чем в открытом WHOIS. При попытке массового сканирования через API аккаунт может быть заблокирован за «злоупотребление ресурсами».

Пример: API регистратора возвращает JSON, что упрощает парсинг, но дает задержку ответа в 0.5-1.2 секунды. Прямой запрос по порту 43 занимает 0.1-0.3 секунды. Экспертный вывод: API подходит для фронтенда сайта, где пользователь проверяет 1-2 имени, но категорически не подходит для автоматизированного поиска свободных доменов по словарям.

Вывод

Для профессионального подбора доменов в зоне .ru забудьте о простых скриптах на fsockopen. Оптимальный стек: PHP 8.2 + ReactPHP + пул резидентских прокси (минимум 15 шт) с ротацией. Избегайте использования API регистраторов для массовых проверок, так как это ведет к бану аккаунта. Начинайте с настройки системы логирования ответов, чтобы отсекать 'false negative' (ошибки сервера, которые скрипт может принять за занятость домена).