В мире SEO стратегия построения PBN (Private Blog Network) часто начинается с поиска и перехвата качественных дроп-доменов. Чтобы понять, стоит ли брать домен, нужно быстро и точно получить информацию о доменах: кто регистратор, когда он был зарегистрирован, когда освободится.

Традиционные сервисы whois решают эту задачу, но медленно и с лимитами. Современной альтернативой стал протокол RDAP — и мы рассмотрим, как с его помощью создать собственный массовый многопоточный сервис whois на Python.

RDAP против WHOIS: в чем разница

Многие вебмастера привыкли использовать команду whois или веб-интерфейсы.

RDAP (Registration Data Access Protocol) — это стандартизованный, JSON-ориентированный протокол, который выдает ту же информацию, что и WHOIS, но в структурированном виде.
  • Структурированные данные — проще парсить и анализировать.
  • Поддержка HTTP/HTTPS — можно использовать обычные запросы requests в Python.
  • Единый формат — не зависит от регистратора.
  • Возможность автоматизации массовых проверок без сложного парсинга текста.

Как работает массовый RDAP-чекер

Если ваша цель — узнать дату регистрации домена, дату истечения и дату освобождения домена, вам нужен инструмент, который:

  1. Принимает список доменов из файла .txt (по одному в строке, с поддержкой форматов http://, https://, www.).
  2. Автоматически определяет RDAP-сервер для каждой зоны (.com, .org и т. д.).
  3. Работает многопоточно — обрабатывает тысячи доменов за минуты.
  4. Выдает результат в таблице и дает возможность скачать CSV.

Как работает Python код

Очистка доменов

def clean_domain(domain):
    domain = re.sub(r'^https?://', '', domain)
    domain = re.sub(r'^www\.', '', domain)
    return domain.split('/')[0].strip()

Эта функция удаляет протокол, www и лишние слэши, чтобы мы работали только с чистым доменным именем.

Определение RDAP-сервера

def get_rdap_server(domain_suffix):
    response = requests.get("https://data.iana.org/rdap/dns.json")
    data = response.json()
    for entry in data.get("services", []):
        if domain_suffix in [z.lower() for z in entry[0]]:
            return entry[1][0]

RDAP-сервер для каждой зоны берется из официального списка IANA. Это избавляет от необходимости вручную прописывать адреса.

Получение информации о домене

def get_domain_info(domain):
    domain = clean_domain(domain)
    suffix = domain.split('.')[-1].lower()
    rdap_server = get_rdap_server(suffix)
    if not rdap_server:
        return [domain, '', '', '', '', '', '', '', 'Нет RDAP сервера']

    rdap_url = f"{rdap_server.rstrip('/')}/domain/{domain}"
    response = requests.get(rdap_url, timeout=10)

    if response.status_code == 404:
        return [domain, '', '', '', '', '', 'свободен', rdap_url, 'OK']

    data = response.json()
    events = {e.get('eventAction'): e.get('eventDate') for e in data.get('events', [])}

    return [
        domain,
        get_registrar_name(data),
        events.get('registration', ''),
        events.get('expiration', ''),
        events.get('last changed', ''),
        ', '.join(data.get('status', [])),
        'занят',
        rdap_url,
        'OK'
    ]

Многопоточность

with ThreadPoolExecutor(max_workers=10) as executor:
    futures = {executor.submit(get_domain_info, domain): domain for domain in domains}
    for future in as_completed(futures):
        results.append(future.result())
Параллельная обработка позволяет проверять тысячи доменов в считанные минуты: 1 000 доменов — за ~20 секунд, 13 000 доменов — за 4 минуты.

Основной интерфейс:
интерфейс крипта на python

Экспорт в CSV

После завершения проверки формируем CSV-файл с полями:

  • Домен
  • Регистратор
  • Дата регистрации
  • Дата истечения
  • Дата изменения
  • Статус
  • Свободен/занят
  • RDAP URL
  • Статус проверки

Где применить RDAP-чекер

  • Перехват дропов — вы видите, когда истекает регистрация и можно поймать домен.
  • Подбор доменов для PBN — проверка истории и активности домена.
  • Мониторинг портфеля доменов — контроль даты истечения, чтобы не потерять важный сайт.
  • SEO-аудит — выявление доменов с истекшей регистрацией для анализа ссылочного профиля.

Установка и запуск

Чтобы запустить сервис:

pip install streamlit requests

Код доступен на GitHub:
https://github.com/Devvver/rdap-demo/blob/main/rdap_check_mass.py

Запуск через Streamlit:

streamlit run rdap_check_mass.py

После старта в браузере откроется интерфейс, куда можно загрузить список доменов, получить таблицу и скачать CSV.

Внимание, RDAP не работает с региональными зонами, типа ua, ru, fr и других.

RDAP-чекер на Python — это быстрый, точный и гибкий инструмент, который заменяет классический WHOIS при массовых проверках.
Он помогает узнать дату регистрации домена, дату истечения и оценить, когда произойдет дата освобождения домена.
Для SEO-специалистов, работающих с PBN и дропами, это способ автоматизировать рутинную задачу, экономить время и всегда быть на шаг впереди конкурентов.

Автор

С 2007 года занимаюсь созданием контент проектов и их монетизацией. Senior Seo специалист, блоггер.

3 комментария

  1. Из 19 реально свободных доменов, определил 3 свободных, 2 Ошибка запроса: HTTPSConnectionPool(host=’rdap.hostmaster.ua’, port=443): Max retries exceeded with url: /domain/whoiam.ru(Caused by ConnectTimeoutError(, ‘Connection to rdap.hostmaster.ua timed out. (connect timeout=10)’)) а остальные Нет RDAP сервера :'(

    Лучше уж через Арсенкина или на худой конец foxwhois)

    Но в любом случае спасибо за еще один способ, не знал о таком!)

    • Евгений Молдовану Ответить

      Забыл добавить в пост что региональные зоны, типа ua, ru, fr и так далее не проверяются. Обновил.

      • Ого это всё меняет) В любом случае спасибо, питончик последнее время выручает, особенно за счет ллмок)

Написать комментарий

Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Отказаться
Политика конфиденциальности