Проверка доступности домена через обычный `checkdns` или `gethostbyname` дает ложноположительный результат в 30-40% случаев, так как отсутствие DNS-записи не означает, что домен свободен. Для реального мониторинга зоны .RU требуется работа с WHOIS-серверами, где лимиты запросов становятся главным техническим барьером.
Механика WHOIS и ловушки зоны .RU
Основная ошибка новичков — попытка определить статус домена через HTTP-запрос или DNS. В зоне .RU домен может быть зарегистрирован, но не иметь привязанных NS-серверов или A-записей. Единственный достоверный метод — запрос к серверу whois.nic.ru по порту 43. Однако при интенсивности более 10-20 запросов в минуту с одного IP, сервер REG.RU или RU CENTER временно блокирует ваш адрес (ban time от 15 минут до 24 часов).
Кейс: при массовой проверке списка из 1000 доменов через простой цикл PHP, 60% запросов получили пустой ответ из-за срабатывания анти-флуд фильтров. Вывод: для серьезных задач нельзя использовать прямой сокет без задержек (sleep) или прокси-пула.
Оптимизация скрипта: скорость против блокировок
Стандартный `fsockopen` работает медленно. Для ускорения проверки в 3-5 раз следует использовать `curl_multi` или асинхронные запросы, но это увеличивает риск бана. Оптимальный интервал между запросами к WHOIS — 2-3 секунды. Если нужно проверить 10 000 доменов, расчетное время составит около 6-8 часов на одном IP.
- Метод DNS (быстрый, но неточный): 0.1 сек/запрос.
- Метод WHOIS (точный, медленный): 1.5-3 сек/запрос.
- Использование API регистраторов: 0.5 сек/запрос, стоимость от 0.1 до 1 рубля за запрос при опте.
Экспертный вывод: если объем проверки разовый до 100 штук — используйте простой PHP-скрипт; если системный — только API или сеть из 50+ резидентных прокси.
Парсинг ответа и статус-коды
Ответ WHOIS в зоне .RU не возвращает JSON. Это неструктурированный текст, где статус доступности определяется по ключевым фразам. Например, фраза «domain not found» или «no match for» означает, что домен свободен. Однако разные серверы (nic.ru, whois.ru) могут возвращать разные формулировки.
Пример ошибки: скрипт пометил домен как свободный, потому что сервер вернул ошибку тайм-аута, а не ответ о статусе. Чтобы избежать этого, в коде должна быть строгая проверка на наличие конкретного слова-маркера и обработка исключений. Для тех, кто только осваивает разработку, рекомендую изучить готовые скрипты на PHP для новичков, чтобы понять логику обработки строк через регулярные выражения `preg_match`.
Экономика автоматизации: самопис против API
Разработка собственного парсера с системой ротации прокси занимает около 10-15 рабочих часов программиста (стоимость разработки от 15 000 до 40 000 руб.). Использование готовых API (например, WhoisXML или локальных сервисов) обходится в среднем в $0.05 за запрос при малых объемах. При проверке 50 000 доменов в месяц стоимость API составит около $2 500, тогда как поддержка своего сервера с прокси-фермой — около $50-100 в месяц.
Мой опыт: для арбитражников и дропхантеров самописный скрипт на PHP с базой данных MySQL для кэширования результатов — единственный рентабельный вариант, так как он позволяет мониторить тысячи имен в реальном времени без оплаты за каждый чих.
Вывод
Для разовых проверок используйте простой PHP-скрипт на базе fsockopen с задержкой в 3 секунды. Для промышленного масштабирования (1000+ запросов) забудьте о прямых запросах: внедряйте пул из минимум 20 прокси-серверов и кэширование ответов в БД, чтобы не перепроверять одно и то же имя дважды. Избегайте библиотек, которые обещают «мгновенную проверку без API» — они либо используют DNS (что дает 40% ошибок), либо быстро приведут ваш IP в черный список WHOIS-серверов.