[Data Mining, Big Data, Исследования и прогнозы в IT] Как мы снова просканировали все домены в Интернете

Автор Сообщение
news_bot ®

Стаж: 6 лет 4 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
24-Июн-2021 10:32


Я уверен, вы неоднократно видели заголовки“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 все также лидер, но но суммарно семерка уже впереди.ТехнологииДля определения технологий мы использовали wappalyzer. Это популярное расширение для хрома, которое имеют в открытом доступе библиотеку технологий. Алгоритм определения предельно простой - в html коде, url js, css урлах проверяются наличие подстрок характерных для технологий.
Таким образом получается, на WordPress работает 23 млн доменов из 148 млн доменов отвечающих 200 код = 15% доменов в Интернете. Или 55 млн хостов из 295 млн хостов отвечающих код 200 = 18% хостов в интернете.
Удивляет цифра с cloudflareВ тоже время по хостам мы видим около 10 млн с CloudFlare. Возможно в своей статистике они считают еще поддомены, которых у нас нет в базе.ЗаключениеСбор и обработка данных в интернете - это весьма увлекательное занятие, которое заставляет искать нестандартные подходы, как например для очередей. Так и вставлять мыслимые и не очень проверки на каждом участке обработки (как файлы robots.txt по гигабайту).Честно говоря, я думал что за три года должно было поменяться куда больше цифр. По факту общий объем доменов +- стабилен, количество работающих сайтов также. По видимому, население Земли растет быстрее, чем количество сайтов в Интернете.Буду рад услышать ваши комментарии и замечания.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_data_mining, #_big_data, #_issledovanija_i_prognozy_v_it (Исследования и прогнозы в IT), #_internet (интернет), #_issledovanie (исследование), #_data_mining, #_big_data, #_issledovanija_i_prognozy_v_it (
Исследования и прогнозы в IT
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 12-Июн 17:22
Часовой пояс: UTC + 5