Как просмотреть 20 млн доменных имен и остаться довольным

в 11:15, , рубрики: docker, docker-compose, javascript, node.js, Исследования и прогнозы в IT

Друзья, добро пожаловать! Ниже вас ждет история о том, как было проанализировано 20 миллионов доменных имен и что из этого вышло. Результаты можно посмотреть скачав csv-файл или восстановив дамп базы данных в PostgreSQL.

image

При желании можно поиграться с исходниками здесь или сразу с контейнерами, используя

docker-compose.yml

version: "2"
services:
  app:
    image: danieljust/domain-finder-v1
    tty: true
    ports:
      - "3000:3000"
  rabbit:
    image: rabbitmq:3
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
      POSTGRES_USER: postgres
      POSTGRES_DB: postgres

Инструкцию можно найти также на гитхабе
Приятного чтения!

Disclaimer!

Все, что вы увидите и прочтете в данной статье, не является призывом и агитацией к домейнингу, а уж тем более к киберсквоттингу. Все действия были совершены ради интереса и, как говорится, «for fun».

Вступление

У многих компаний, желающих провести ребрендинг или только-только выходящих на широкий рынок, возникает желание подобрать красивый домен.
Любопытства ради, было решено в качестве красивых доменов посмотреть короткие 1-3 символьные домены.

Терминология

  • top-level domain (TLD) — домен верхнего уровня;
  • second-level domain (SLD) — домен второго уровня.
    Пример vk.com — в данном случае vk = SLD, com = TLD.

Структура таблицы в базе данных

id sldlength tld domain price roubleprice available definitive
1 1 actor 1.actor 20000 1199520 True True

id — идентификатор записи
sldlength — длина домена второго уровня
tld — домен верхнего уровня
domain — собственно доменное имя
price — цена в долларах
roubleprice — цена в рублях
available — флаг, показывающий доступность домена
definitive — флаг, показывающий был ли флаг available сверен с реестром

Результат

В процессе работы были замечены интересные сочетания доменных имен, ознакомиться с ними можно в таблице ниже.

domain roubleprice
2.pizza 47981
0.fail 23991
a.xyz 1199520
ab.xyz 299880
ad.money 11876
as.mba 2400
as.guru 11996
at.network 23991
js.army 47981

2.pizza — Идеально подойдет для начинающей пиццерии;
0.fail — для сверхнадежного чего-нибудь;
a.xyz, ab.xyz — для желающих быть поближе к гуглу;
ad.money — для рекламной площадки;
as.guru, as.mba — для консультационных фирм;
at.network — для фирм, связанных с администрированием сетей;
js.army — пролетарии всех стран, объединяйтесь.

Большинство двухсимвольных доменов, если и оказывались свободными, то их цена кусалась.
В двухсимвольных доменах верхнего уровня стран было найдено четыре свободных домена (все в чешской зоне), да и к тому же за небольшие деньги в 1000 рублей.
В трехсимвольных доменах верхнего уровня стран нашлось куда больше свободных и по доступной цене.
Количество общих доменов верхнего уровня многократно преобладает над доменами стран (домены стран составляют лишь 4% от общего числа свободных доменных имен)

image

Путь к результатам

Этап 1. Начало

За основу возможных символов в SLD были взяты -1234567890abcdefghijklmnopqrstuvwxyz (всего 37 символов).
Выясняется, что имеем мы число размещений с повторениями p^n.
Итого $inline$ 37+37*37+37*37*37 = 52059 $inline$ вариантов.
Поскольку SLD не может начинаться и заканчиваться дефисом, исключим такие случаи и получим 49284.
Но это только начало.

Этап 2. Выбор API

Множество сайтов позволяют узнать, занят ли указанный домен через веб-интерфейс.
Для выполнения поставленной задачи ручного ввода данных явно недостаточно и требуется API, способное решить проблему.
В процессе поиска были встречены и отброшены следующие варианты:

  1. предоставьте нам паспортные данные, а мы вам доступ к API;
  2. заплатите нам всего лишь раз (от 5 до 15 долларов) и получите пожизненный доступ к API;
  3. оплата доступа к API раз в месяц;
  4. каждый запрос к API стоимостью около $0,01.

Но душа хотела привнести что-нибудь полезное в мир open-source да еще и максимально бесплатно.
Решением проблемы стало данное API.

Его плюсы:

  1. бесплатный;
  2. позволяет обработать до 500 доменов за один запрос;
  3. проработанная API документация.

Его минусы:

  1. ограниченное количество запросов в минуту;
  2. ответы от сервера не всегда совпадают с тем, что предлагает UI.

Например, ответ API может содержать информацию, что сайт занят, и его нельзя купить. В это же время, данное доменное имя может быть доступно для покупки через UI.

Как быть уверенным в доступности домена?

В процессе общения с технической поддержкой, было выяснено, что при финальном подтверждении покупки выбранного домена, производится контрольная проверка его доступности.
Из наблюдений, флаг definitive позволяет с большей вероятностью сделать вывод о занятости доменного имени.

Этап 3. Выбор инструментов и подготовка решения

С помощью API godaddy можно получить список TLD, в которых возможно приобрести доменные имена.
Из них выбираются TLD состоящие из одного слова (были убраны *.com.ru и т.д.). В итоге 400 TLD. Легкая арифметика приводит нас к $inline$ 49284*400 = 19 713 600 $inline$ доменов к проверке.
API godaddy может обработать до 500 доменов за 1 запрос, но имеет ограниченное количество запросов в 1 минуту.
В соответствии с вышесказанным, алгоритм работы программы был следующим:

  1. разделить все необходимые к проверке домены на куски по 5000 доменов;
  2. положить полученные куски в RabbitMQ очередь;
  3. взять порцию данных;
  4. поделить по 500 доменов. Отправить 10 запросов;
  5. обработать данные, положить информацию о свободных доменах в базу данных;
  6. подождать 20 секунд;
  7. при наличии сообщений в очереди выполнить пункты 3-6 снова.

Для удобства PostgreSQL и RabbitMQ были подняты как docker-контейнеры.

Этап 4. Анализ данных

После того, как с работой скрипта было покончено, возникла необходимость выудить из полученных данных что-нибудь интересное и полезное.
Данные любезно помещены в domains.sql и domains.csv.
image

Под фильтрацией в дальнейшем подразумевается поиск найденных SLD в списке самых частых английских сочетаний букв в соответствии с этим источником

image
image

Из пары графиков выше, можно сделать вывод, что количество свободных доменных имен, содержащих частоупотребляемые сочетания букв английского алфавита стремится к нулю.

Пятерка самых дорогих доменных имен

domain roubleprice
ads.cloud 11 906 200
vod.cloud 11 852 400
usa.cloud 11 852 400
seo.cloud 11 852 400
vip.cloud 11 852 400

Пятерка самых дешевых доменных имен

domain roubleprice
xt1.company 590
xt1.casa 590
xsz.company 590
xt1.click 590
xt1.business 590

Заключение

That's all Folks!

Прошерстив интернет было выявлено множество забавных доменов. А самое главное, что новым компаниям не стоит отчаиваться: интересные доменные имена все еще свободны, осталось их только увидеть.

Автор: danieljust

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js