НЛО прилетело и оставило эту надпись здесь.
та не, вполне нормально получается обрабатывать
Здравствуйте, спасибо за статью. Напишу здесь вопросы, возможно это будет еще кому-нибудь интересно:
1) можете более точно описать конфигурацию серверов, на которых это все дело запускалось (сколько ядер, памяти и т.д)

2) В Golang вы используете стандартный http клиент, без всяких чит кодов, наподобие fasthtttp?

3) В своих сервисах по краулингу пишете с нуля (на базе готовой, которя уже реализует небольшой функционал, она вроде из пакета golang.org/x/html) библиотеку по разбору DOM страниц или уже готовую (Goquery например)?

4) Пробовали что-то подобное на php сделать, как считаете, когда уже целесообразно будет вместо php взять Go, и какие библиотеки использовали из php?
работает на php/1.0

поделитесь, кто это?
я боюсь, что мы его дружно положим хабраэффектом, скину вам в личку адрес
скрин заголовков:
image
Может его стоит простимулировать хабраэффектом?

Можно любой заголовок отдавать. Кто вообще им верит?

согласен, но я очень сомневаюсь, что хотя бы каждый десятый подставляет фейк значение, чаще всего просто отключают
Но ведь сайт такой только один) Да и, вроде, не было никогда версии PHP 1.0
как выяснили в переписке в личке, сама суть сайта — печать 3д появилась гораздо позже, чем пхп 1

А откуда вы набрали доменные имена? Если обходом в глубину — deep web в вашей выборке не присутствует, в противном случае остаётся либо базы регистраторов доменов, либо брутфорс.

покупаем базу доменов у аггрегаторов, самая главная проблема этих баз — там нет поддоменов

А меж тем поддомен — это вполне самостоятельный домен, на котором может быть и другой сервер и другой стек. Что делает статистику несколько неполной.

Мне кажется, что проценты это поменяет лишь в рамках погрешности. Да и как отличать — поддомен это или один и тот же сайт, как раньше было с никами на хабре? Такие сайты как раз сместят статистику в сторону более ошибочной

Некоторые поддомены есть у https://opendata.rapid7.com/sonar.fdns_v2/

спасибо, потестирую их!
Как мы просканировали весь интернет и что мы узнали
резолвится IP и хоть одна из версий www/без_www http/https отдает любой код ответа
Вы не просканировали весь Интернет, а только попытались просканировать всемирную паутину, которая является его частью.
согласен с «паутиной», статьи я пока пишу хуже, чем код
к более глубокому сканированию мы идем постепенно, следующая цель собрать несколько млрд страниц со всех сайтов и по ним строить аналитику
kafeman, вероятно, имел в виду, что Интернет не ограничивается Вебом. Помимо веб-серверов, в сеть «смотрят» и другие, по другим протоколам.
а ещё есть сервера веб, обходящиеся без доменных имён
Лично меня несколько удивляет такая популярность 5.6

Ничего сверх-удивительного. Фреймворки берутся под 5.6, версия 5.6 берется доступная под платформу, 7 не берется из-за потенциальных проблем совместимости кода php5 с движком php7, а перепиливать фреймворк это дело небыстрое. Плюс легаси, в виде фреймворков же, но старых неподдерживаемых версий, плюс настройки вида "раз поднял, два забыл, так и крутится", плюс 5.6 это последняя версия пятого пыха. Всё вместе дает достаточный эффект.

я очень помню как переходил на 5.6 с 5.4 кажется, было достаточно много правок
а когда с 5.6 на 7 — то толком ничего и не менял, запостил тогда скрин с пинбы:
image

Аналогично, переводили кодовую базу порядка миллиона строк кода. Для перехода с 5.4 на 5.6 потребовались усилия отдельной команды до 6 человек и месяца 4 работы.
А вот до 7 обновились менее чем за месяц.

Кстати, возможно, на 7 не переходят испугавшиеся после перехода на 5.6

Скажите пожалуйста — а откуда берете список доменов по которым нужно ходить?

не хочу никого рекламировать, ищется в гугле «buy all domains list»
А не проще ли простым перебором комбинаций(знаю, что бесконечно много), для получения экзотических сайтов на которые никто не ссылается, но вполне себе существуют и живут жизнью
если домен существует, то он всегда будет в базах регистраторов.
с поддоменами уже сложнее, но перебор как мне кажется уж слишком дорогая операция получится
А можно хотя бы в очень общих чертах, как монетизировать сию деятельность?
мы практически не зарабатываем на этом (учесть серверные и прочие расходы)
главная цель для меня как технаря — интересно покопаться в дебрях сети, улучшить алгоритмы краулера (который коммерческий проект) и опыт с большими данными
А еще не все краулеры в мире написаны?

А можете поделитеся, базу доменов где брали? Российские можно получить у рег.ру, а вот зарубежные и международные

мы покупаем у аггрегаторов, несложно ищется в гугле «buy all domains list»
Подскажите пожалуйста, откуда берётся кука TS01e85bed (последний скрин)?
как я понял, это сайты на Wix
pepyaka_wix — очень интересный сервер.
сам хедер там Pepyaka, я дописал _wix чтобы было понятнее
но этимология слова интересна, может кто-то и знает
Лексика Упячки же. Какой-то упячкоид поднял сервер, ну и подставил в заголовок словечко из своего сленга.
и так… миллион раз:)

Пепяка — так в ДИТ компании x5 retail group называют (по крайней мере раньше называли) их розничную сеть (ПЕрекресток, ПЯтерочка, КАрусель)

Wix — это же система создания сайтов, конструктор. И судя по данным, 125 тысяч доменов, которые покупались специально для wix и через wix, затем были заброшены и неоплачены, и именно поэтому идёт редирект на главную wix.com.
А можно подробней про стек, для чего редис и почему мускул итд. Почему своя реализация dns и http, можно в личку если не хочется на публику.
секрета особого нет, редис и мускл — то, с чем хорошо умеем работать
своя реализация для dns и http — ради оптимизации ресурсов.
можно было собрать всю эту инфу и краулером на php, но тогда ты расходы на оборудование возросли в разы
Таким образом доля работающих сайтов по https достигла 73% от количества сайтов работающих по http.

Тогда как вы назовёте "27% от количества сайтов работающих по http"?
Напрашивается так: "доля работающих сайтов не по https (а каких? если всего два типа в выборке) достигла 27% от количества сайтов работающих по http" (или "… по http… от… http", но это ещё хуже, т.к. явный бред).


Одно число может быть меньше/больше другого на Х (в Х раз). Например, "число сайтов, работающих по http больше в 1/0,73=1,37 раза числа сайтов работающих по https".


Процент — это "сотая доля ...". Доля — часть целого. В вашем случае — выборка про протоколам http и https это целое. https и http — это доли. Имеет смысл сравнивать доли между собой в разах (пример выше), но считать сколько одна доля составляет процентов от другой — смысла не имеет.


Выношу этот комментарий в паблик, поскольку весь интернет заполнен подобными "процентами" (да и на Хабре тоже часто встречается).

согласен с Вами, правильнее было бы написать долю https от всего хостов отдающих код 200
Таким образом доля работающих сайтов по https достигла 73% от количества сайтов работающих по http.
Тогда как вы назовёте «27% от количества сайтов работающих по http»?
Я так понял, что если 100х сайтов работает по http, то по https — 73х
Ещё одна интересная околокраулерная штука — это поиск /.{git,svn,hg}. По собственному опыту года полтора назад, валидное содержание в них находилось где-то на одном проценте доменов.
добавлю еще интересно количество открытых серверов редиса без пароля, mysql, memcached
но там нужны «правильные» ip, которые позволят забить на абузы

Такое вроде умеет искать https://www.shodan.io/

каким образом достигается резолвинг domain -> ip со скоростью 2к+ доменов в секунду? точнее, какие сервера способны с такой скоростью выдавать ответы?
увы я таких серверов не нашел, для этой задачи нужно очень много dns серверов и очень много ip с которых их можно долбить, где эти сервера брать — отдельная задача

Я в начале 2000-ных на Perl+epoll писал подобное. Скорость получил довольно грубым методом: в процессе резолва имеющихся доменов я получал адреса их DNS-серверов, после чего просто проверял не открыт ли на этих серверах рекурсивный ресолвинг всем желающим — и таких было довольно много, так что дальше к ресолвингу подключались найденные "халявные" DNS-сервера. Очень быстро их набиралось достаточно много, чтобы рейт запросов к каждому был достаточно низким и никого не напрягал. Единственно что, на всякий случай делал дублирующую проверку через другой DNS, на случай если кто-то из "халявных" это специальный ханипот возвращающий левые ответы.

о да, есть отдельная категория DNS возвращающих всякую хрень, поэтому результаты всегда нужно проверять еще на нескольких, что в сумме дает снижение общего rps

Если не путаю, у меня тогда был RPS порядка 900. Помню, огорчался что до тысячи не дотянул немного. Но… это был Perl 15 лет назад на одном 10Mbps сервере. Думаю, сейчас и на Go можно выжать намного больше 2k.

Как быстро шел парсинг с одного сервера?
Как добились такой скорости?
Было бы интересно взглянуть на код.

самую первую версию краулера я написал где-то за пару часов, «ядром» там было что-то типа
resp, err := http.Get(url)

и оно работало, но очень на малых объемах и до 1-5 rps. Понадобилась куча времени в обнимку с мануалом, дебаггером, профайлером и уже моим любимым Wireshark, чтобы память и сокеты не текли. Код, увы, не opensource

Эх. Побольше бы технических подробностей )

:)
Если можете поделиться какими-то интересными наработками, как тюнинговали, переиспользовали буферы, боролись с аллокациями и прочим, то было бы очень интересно.

А как вы получили список доменов? Вы его где-то стянули или по ссылкам сайтов ходили?

Сорян, нашел ответ выше по коментариям. Но судя по всему говоря «а после и по всем 213 млн», по всем, что вы смогли у кого-то купить)?
а я вас вижу в логах:)
очень вряд ли, боты уже неделю как спят))
Dataprovider.com — показалось как будто похоже
кто знает что это за кука ts01e85bed
это сайты на Wix
Админы публичных DNS серверов могуть извлечь из них большой список доменов, или даже просто провайдер может логировать домены из всех проходящих DNS запросов.

Есть и такая публичная вещь как Certificate Transparency logs, где сохраняются данные об https сертификатах. https://crt.sh/?id=358997645
Очень интересно увидеть пример скрытой сетки на тысячу доменов.
такие данные шарить увы не могу, но могу сказать что тысяча доменов это не такая уж и большая сетка
когда я прошлый раз сканил инет зимой, я нашел сетку из 34 тыс сайтов в рунете! при чем сайты были самых разных тематик — от стройки до чуть ли не родов, в бурже все еще интереснее
Это была сетка из абсолютно разных сайтов, или все они были похожи друг на друга по названию и внешнему виду? По каким признаком опозналась эта сетка? Один и тот же adsense Id? Это был тупо дорвей или рерайченный через биржу контент? На чём они зарабатывали, на партнёрке, или продаже ссылок, или на Adsense/РСЯ?
Можно пример хотя бы одного сайта из этих 34 тысяч?
Отличная аналитика!
Но вы как-то проигнорировали один из актуальнейших вопросов: сколько живых в IPv4 и IPv6?
спасибо! ipv6 надеюсь сделаем в будущих исследованиях, пока что допиливаем краулер, для сбора еще большего количества инфы
Т.е. это всё справедливо только для четвёрки?
А зачем используются HTTP-коды ответов > 5xx?
я сам не знаю, в спецификации их нет, но реально они есть
Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.