Как мы снова просканировали все домены в Интернете

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Я уверен, вы неоднократно видели заголовки“40% сайтов использует вордпресс”, “10% сайтов сидят на CloudFlare”, “Самая распространенная версия PHP X.X”. Обычно не указывается ни тип выборки сайтов для анализа, ни ее объем. Реально ли почти половина интернета работает на Wordpress?

Три года назад я опубликовал статью про то, как мы проанализировали “морды” более чем 250 млн доступных доменов.

В начале 2021 года мы сделали новый сбор данных, добавили определение технологий, трек пикселей, улучшили анализ контента и ссылочного.

Данная статья - это обзор текущего состояния основных показателей: сколько сайтов работает, какой процент использует HTTPs, какая сейчас доминирует версия PHP.

Под капотом

В целом парсинг данных не самая сложная задача и многие программисты ее воспринимают без особого энтузиазма.
В чем сложность? Берем любимый язык программирования, для парсеров, скрейперов - это часто python. Библиотеку для работы с сетью, разбором html (или может быть вы вообще предпочтете регулярки), базу данных, куда все дело сохранять (хотя можно и в csv), не самый слабый сервер и поехали. Я думаю, что мидлу понадобится до недели (при первоначальной оценке в день), чтобы сделать рабочий прототип, который легко сможет скраулить 1-10 млн страниц.

Сложности возникают с ростом объемов. Поставщики отдают порядка 250-260 млн доменов, поддоменов обычно в них нет.
Чтобы сделать анализ, нам нужно, в первую очередь, отрезолвить домен в IP адрес, но т.к. еще имеется поддомен www суммарное количество кандидатов на резолвинг возрастает вдвое до 500 млн доменов.
Здесь и образуется самое узкое место системы. Использовать системный резолвер не получится из-за крайне низкого RPS (если быть точнее, он даст хороший RPS, но только часть доменов будет реально отрезовлена). С этим тоже можно жить, но тогда ваш парсинг растянется на долгие месяцы, хочется всегда быстрее.
Собрав 10-20 публичных DNS серверов все равно их будет не достаточно. Мне также предлагали брать DNS, которые подвязаны к домену и проверять их на возможность рекурсивных запросов, но увы таких весьма не много.

Выход остается по сути один - нам нужно много DNS серверов из всех доступных публичных и не очень списков и много своих серверов откуда делать резолвинг. Но и здесь появляется еще одна проблема. Сейчас DNS сервер работает, а через час он отвалился. Другой сервер стабилен, но отдает вам фейковый IP адреса, которые не привязаны реально к домену. А третий DNS имеет детский фильтр и вы не сможете с ним отрезолвить определенную категорию сайтов.

Следующие проблемы начнутся, когда вы будете подключаться к IP, чтобы запросить главную страницу. Имея домен и IP нам нужно обычно проверить 4 подключения:
http://domain.com
http://www.domain.com
https://domain.com
https://www.domain.com

Если это сделать в лоб с одного IP гарантировано получите тысячу и одну абузу за сканинг портов и прочие смертельные грехи с точки зрения немецких хостингов. Поэтому нужно следить за тем, чтобы стараться не ходить на один и тот же целевой IP адрес с одного своего IP.

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

Плюс добавляем еще анализ контента, стека технологий, robots.txt, sitemap.xml и вся система становится уже мягко говоря не простой.

Наша реализация представляет собой Go сервисы которые работает по принципу пайпинга - результат работы одного сервиса направляется в очередь, которую обрабатывают другие сервисы. Можно гибко конфигурировать очередность обработки и данные, которые надо собирать.

Существует тысяча и одна готовая система очередей, которые проверены временем. Это отличные инструменты, которые из коробки умеют шардирование, гарантированную доставку, очередность сообщений. Но что если нам наоборот не нужна очередность, а скорее даже небольшой random? Тут увы готовых решений весьма не много. Redis имеет тип sets, но чтобы вместить все на таких объемах нужно брать сервер с терабайтом+ оперативки - не самое бюджетное занятие, поэтому мы написали свой велосипед.

Главная особенность - это хранение на SSD, небольшое потребление оперативки и процессора. Минимальная единица данных - это вектор (массив) с элементами payload для сервиса.

В целом, благодаря использованию Go можно быть очень оптимальными по памяти и влезать в 1-2 ГБ VPS, которые стоят 5-10 EUR/mo и их можно взять несколько сотен одновременно. Не без своих сложностей, комплайенс некоторых хостеров похуже банковского, но все реально.

Данные

Всего в базе 252 млн доменов, из которых отвечают на 80 и 443 порту - 200 млн, статус код 200 имеет - 148 млн доменов. Т.е. это количество реально работающих доменов.

С за время с прошлого анализа, практически не изменилось количество IP адресов - в 2018 году было 13.2 млн, в 2021 г - 14.3 млн уникальных IP адресов, которые указаны в A записи.

Сразу же стоит дополнить, на хостах site.com и www.site.com как и https://site.com могут быть совершенно разные сайты. Поэтому дальше мы перейдем к оперированию понятиями домен и хост.

сумма больше общего количества доменов, т.к. каждый хост может отдавать 4 разных статус кода (комбинации www/non www, http/https)

HTTPS

Что меня удивило - не особо большой рост сайтов (хостов), которые работают на HTTPS. Я ожидал, что за три года все уже должны были перейти на https, но рост их количества 106/86 - 1 = 23%.

www или без www?

За больше, чем 10 лет работы я зарегистрировал, наверное, около сотни доменов и ни один из них не использовал www как главное зеркало. Но по всей видимости наличие www настолько привычно всем, и я бы сказал, что оно победило. Судите сам: Редиректы с non-www на www имеют 50 млн хостов, а с www на non-www - только 37 млн.

Заголовок Server

Заголовок server присутствует на 143 млн доменов и 286 млн хостах, весьма достойная выборка для аналитики.

Если отбросить версии (находятся после слеша /), то получаем такой список отсортированный по хостам:

Самое удивительное из него - это openresty, в прошлом анализе было чуть меньше 4 млн хостов, сейчас же 67 млн. Откуда такой рост - для меня загадка, то ли они раньше отдавали nginx, то ли китайских сайтов больше в анализе стало.

X-Powered-By

Заголовок имеется у 43 млн доменов и 52 млн хостов.

Лидер неоспоримый - PHP, давайте посмотрим на его версии:

Версия 5.6 все также лидер, но но суммарно семерка уже впереди.
Версия 5.6 все также лидер, но но суммарно семерка уже впереди.

Технологии

Для определения технологий мы использовали wappalyzer. Это популярное расширение для хрома, которое имеют в открытом доступе библиотеку технологий. Алгоритм определения предельно простой - в html коде, url js, css урлах проверяются наличие подстрок характерных для технологий.

Таким образом получается, на WordPress работает 23 млн доменов из 148 млн доменов отвечающих 200 код = 15% доменов в Интернете. Или 55 млн хостов из 295 млн хостов отвечающих код 200 = 18% хостов в интернете.

Удивляет цифра с cloudflare
Удивляет цифра с cloudflare

В тоже время по хостам мы видим около 10 млн с CloudFlare. Возможно в своей статистике они считают еще поддомены, которых у нас нет в базе.

Заключение

Сбор и обработка данных в интернете - это весьма увлекательное занятие, которое заставляет искать нестандартные подходы, как например для очередей. Так и вставлять мыслимые и не очень проверки на каждом участке обработки (как файлы robots.txt по гигабайту).

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

Буду рад услышать ваши комментарии и замечания.

Источник: https://habr.com/ru/post/564320/


Интересные статьи

Интересные статьи

С новым руководством Nikola попытается стать успешным производителем грузовиков. Прототип аккумуляторного электрогрузовика Nikola Tre. Компания Nikola, начинающий производитель ...
Создатели Terraria помирились с Google и вернулись к разработке игры для Stadia, облачного игрового потокового сервиса от Google. В начале февраля 2021 года стало известно, что Re-Logi...
На протяжении долгого периода времени главной фишкой и гордостью операционной системы Linux был тот факт, что для нее «не было вирусов», которые могли бы нарушить работос...
Вернёмся года на два назад, когда я был разработчиком. Что я думал? «Хочу стать тимлидом. Это круто, он решает все вопросы, получает больше денег, им становятся после сеньора». Тогда ...
Как обновить ядро 1С-Битрикс без единой секунды простоя и с гарантией работоспособности платформы? Если вы не можете закрыть сайт на техобслуживание, и не хотите экстренно разворачивать сайт из бэкапа...