Думай как Google: как мы начали шпионить за поисковым ботом

Сергей Безбородов CTO JetOctopus рассказывает о том, как в попытке вырастить трафик на сайте миллионнике, он создал аналитический сервис и построил на этом бизнес.

Сергей Безбородов, CTO JetOctopus <br />
Сергей Безбородов, CTO JetOctopus

Как мы нашли нишу для бизнеса

В 2016 году я решил разработать краулер, повторяющий поведение поисковых ботов Google и Яндекс, чтобы проанализировать всего один сайт — наш собственный. Через 1,5 года на основе этого краулера мы c моим партнером построили сервис JetOctopus, который сегодня работает с большими сайтами в нескольких странах. Мы научились объединять результаты краулинга клиентского сайта с анализом его логов за последние полгода, и на основе этих данных получать полную картину — теперь мы видим не только что «не так» с сайтом с точки зрения поискового бота, но и что с этим делать. В этой статье я хочу поделиться с вами историей того, как мы нашли эту нишу и какие взлеты и падения встретились на нашем пути.

Боль клиента

Все началось с того, что в 2013 году я со своим партнером по бизнесу Юлией Нестерец создал сайт-агрегатор вакансий. На тот момент мы уже несколько лет работали с агрегаторами разных тематик – от авто, недвижимости до товаров массового потребления, и у нас руки чесались сделать свой такой же, но лучше.

Через 1,5 года мы запустились сразу в нескольких странах с джоб агрегатором. В России сайт был открыт под брендом hotwork.ru. Наш сайт собирал вакансии, а также имел небольшой, но очень полезный блог с человеческими статьями (а не seo-мусором по $15 на бирже) и снятыми лично нами видео, где мы рассказывали о том, как, например, успешно пройти собеседование, или в чем плюсы и минусы работы в крупных корпорациях. Мы не хотели стать очередными безликим сайтом-агрегатором, мы хотели нести настоящую пользу. Например, мы сделали видео тренажер собеседований, с помощью которого соискатели могут прорепетировать свое собеседования, отвечая на 10 самых популярных вопросов и получая %-ю оценку корректности именно такого ответа и почему ответ А все же более предпочтителен.

Основным источником трафика для нас, как для любого агрегатора, были поисковики Google и Яндекс. От посещаемости зависел наш заработок. Мы стартовали с одним из крупнейших на тот момент национальных seo-агентств. За время роста нашего сайта мы сменили это агентство на фрилансеров и обратно на новое агентство несколько раз.

Мы конечно не фоткали наши встречи с SEO-шниками, но выглядело это примерно так.  Стоковое фото
Мы конечно не фоткали наши встречи с SEO-шниками, но выглядело это примерно так.  Стоковое фото

Я не могу сказать, что никто из них ничего не делал, делали мы как раз очень много, честно и ответственно внедряли задание за заданием. К 2016 году суммарное количество страниц перевалило за 60 миллионов. Посещаемость наших сайтов-агрегаторов вакансий по всем странам колебалась в пределах 40-70 тысяч в сутки. А затем эти цифры перестали расти.

Мы заказывали аудиты, читали многостраничные отчеты. Справедливости ради я хочу отметить, что некоторые задачи, которые ставили перед нами агентства были полезными и логичными. А вот другие выдвигали спорные теории о том, что трафик не растет потому что нужно сделать заголовки вакансий в теге h2. Или, например, мы увидим рост трафика, как только уберем pop-up. И так далее. Я приходил к ним за решением, как ускорить свой гоночный автомобиль, а они советовали мне заменить “елочку-пахучку” в салоне.

После этих встреч у меня складывалось впечатление, что трафик непредсказуем и непрогнозируем, а действия агентства влияют на его рост опосредованно. Денег мы тратили много, а результата я не видел.

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

Что такое краулинг и краулинговый бюджет

Сайты – это живые структуры, которые меняются, растут, какие-то разделы увеличиваются, какие-то наоборот перестают быть актуальными. Чем больше сайт, тем важнее становится техническая сторона и on-site оптимизация. Когда у тебя 5 000 000 страниц, ты не можешь быть уверен в том, что все они нужные и среди них нет никакого мусора.

Большие сайты становятся неповоротливыми по сравнению с со свежими сайтами меньшего объема, которые проще содержать в порядке, а путанная структура больших сайтов уменьшает количество органического трафика. В поисках решения, я посмотрел видео Юрия Титкова про техническое SEO https://www.youtube.com/watch?v=anqUC0UWGWo, которое, в общем-то, задало вектор нашего дальнейшего развития. Я хотел разобраться, все ли нужные страницы индексируются поисковым ботом Google правильно. Для этого я стал искать сервисы, с помощью которых можно скраулить сайт.

Краулинг – это процесс, при котором поисковой бот (краулер) посещает ваш сайт страница за страницей, переходит по всем ссылкам и добавляет их в очередь на индексацию. Он сравнивает список URL-страниц с теми, которые уже есть в индексе, если нужно, обновляет их содержимое, добавляет новые и удаляет старые. Только после этого страницы вашего сайта попадают в индекс поисковой системы, а оттуда в выдачу результатов поиска.

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

Краулинговый бюджет – это определенное количество ресурсов которое Googlebot тратит на сканирование вашего сайта. Он необходим, чтобы приоритезировать что и когда сканировать, и сколько ресурсов для сканирования может выделить хостинг, размещающий ваш сайт. Размер бюджета зависит от различных факторов: размер сайта, скорость генерации страниц, структурные факторы, объем запросов по которым ранжируется сайт, их частотность и другие.

В статье “Что краулинговый бюджет означает для Googlebot” для блога вебмастеров Google Гарри Иллис заметил, что этот бюджет должен волновать только владельцев больших сайтов. Поскольку я как раз являлся владельцем большого сайта, меня волновало, на какие именно страницы моего сайта поисковой бот тратит свой краулинговый бюджет, а какие остаются вне фокуса его внимания.

Фейл с частичным краулингом

<br /> Стоковое фото

Стоковое фото

Я нашел сервис, который предлагал услугу анализа сайта краулером, чтобы посмотреть на него так, как видит его Googlebot. Мне также сказали, что полный краулинг – это дорогостоящая процедура. Сейчас, когда я сам продаю полный краулинг сайта, я думаю, что согласился бы и оплатил полную процедуру, и уже через полгода мы бы получили результат.

Но вместо мы решили сделать частичный краулинг с помощью screaming frog – проверить 200 000 страниц из 5 000 000, а затем полученные результаты реплицировать на весь сайт.

Этот принцип используется в школьной задачке по математике, когда ученому нужно было посчитать примерное количество рыб в пруду: он ловит в сеть 30 рыб и окольцовывает их, а затем отпускает обратно в пруд. Затем он снова ловит 40 случайных рыб, и две из них оказываются окольцованными. Из этого он делает вывод, что на каждую окольцованную рыбу приходится 19 неокольцованных.

30*19+30=600

Значит в пруду примерно 600 рыбин.

Инсайтом результатом частичного краулинга нашего сайта стало то, что 30% проверенных страниц оказались мусорными. Мы начали проверять эти мусорные страницы и выяснили, что большинство из них созданы автоматически.

Специфика сайта вакансий заключается в том, что многие страницы создаются с помощью автогенерации. Например есть вакансия “Няня” и эта вакансия тиражируется на все города, которые есть в базе, чтобы получилось “Няня в Москве”, “Няня в Ставрополе” и так далее. И вот список из 2000 вакансий перемножается на список всех городов и под каждый запрос создается страница. Затем туда добавляются подкатегории, например, “Няня выходного дня”, это тоже перемножается на количество городов, и выходит “Няня выходного дня в Москве” и так далее.

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

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

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

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

Но суть краулинга в том, что он последователен – бот попадает на главную страницу, переходит по всем ссылкам, потом открывает все ссылки на этих страницах и так далее как домино. Это означает, что остановив краулер через 200 000 страниц мы увидели только одну область сайта, которая наиболее близка к главной странице сайта, и ситуация, которая там сложилась не может отображать общую картину.

Мы снова открыли эти автогенерированные страницы, но на посещаемости сайта это все равно сказалось.

Ниша для saas бизнеса

В марте 2016 года мы с Юлей взяли кофе на вынос и прогуливались по городу. Мы долго разговаривали и в итоге пришли к тому, что вместо подписания контракта с saas сервисом на продвижение hotwork мы стартуем новый проект – разработаем собственный краулер. Тем более, что выглядела эта задача простой и прибыльной.

Прибыльной она нам показалась потому, что когда мы запросили просчет полного краулинга нашего сайта нам выставили цену в 2500 EUR в месяц с годовым контрактом. Во время презентации услуг, которые входили в этот пакет, нам показывали презентацию краулинга и типы ошибок, которые он отлавливал, и я понял, что я бы сам мог написать алгоритмы, которые делают все то же самое. Только лучше.

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

Выбор технологии

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

Сначала мы рассчитывали полностью подготовить проект за 6 месяцев, однако в общей сложности потратили год только на написания ядра. Его пришлось переписать на Go, предварительно изучив технологию, разобравшись с мутексами, каналами, тредами и прочим. Затем я раз 10 переделал структуру хранения данных, очередей и прочего, пока не создал краулер, работой которого был бы хоть как то доволен: он получился достаточно технологичным, требовал мало ресурсов, а работал быстро. Мы назвали свою компанию JetOctopus.

Наша команда. Партнер Юля Нестерец слева от меня.  Сергей Безбородов
Наша команда. Партнер Юля Нестерец слева от меня.  Сергей Безбородов

Первые продажи

Пока я заканчивал бэкэнд, мой партнер по бизнесу Юля стала предлагать знакомым владельцам крупных сайтов наш краулер, как альфа-версию продукта. Первыми согласились auto.ria.com – это старый, громоздкий, высоконагруженный сайт с весьма сложной архитектурой. Мы предложили им анализ 1 млн. страниц.

Поскольку у нас не было никакого фронтэнда, мы предоставили им отчет в виде таблички в Excel. Мы поразили этого клиента в первую очередь скоростью краулинга и объемом собираемых данных. Результаты и наши рекомендации по оптимизации оказались достаточно хороши для того, чтобы auto.ria.com дозаказали у нас еще 20 миллионов страниц уже на платной основе.

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

Нужно построить монополию

Когда перед нами стал вопрос расширения географии рынка, Юля как раз читала книгу Питера Тиля “От нуля до единицы”.

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

Мы дали задание аналитику проанализировать 50 стран по этим двум критериям. Так мы нашли Бразилию, где много диких обезьян. Страна выглядело очень соблазнительно: большое население, высокий процент проникновения интернета, развитый e-commerce и никакой конкуренции. Даже удивительно, как такой лакомый кусок еще никто не захватил.

Юлия оказалась давно знакома с одним из топ IT предпринимателей Бразилии Romero Rodrigues. Они созвонились и она рассказала ему о проекте. Он реагировал очень живо, он сказал, что ему очень нравится, и что такого продукта очень не хватает в Бразилии. Четыре месяца Юлия вела активные холодные продажи через LinkedIn с бразильцами, многие охотно шли на контакт, тестировали и хвалили проект, но заказывать услугу никто не спешил.

Тогда Юлия решила напрямую спрашивать своих собеседников, мол, если вам действительно нравится, то давайте попробуем сотрудничать. Поскольку прайс тогда еще не был разработан, а выйти на бразильский рынок хотелось любой ценой, она просто назвала цену британского конкурента, деленую на пять. В ответ ее собеседник, после небольшой паузы, сказал, “тулза классная, но мы тут бедные. Для нас это дорого”. Оказалось, что в Бразилии много только диких обезьян, а вот денег не много. “Да и потом, – вежливо написал наш охлаждающийся лид, – мы должны платить налог за любую работу с иностранными компаниями в размере 40%”.

Сказать, что мы были шокированы этими новостями – не сказать ничего. Больше всего мы задавались вопросом, как так вышло, что мы не узнали об этой особенности законодательства до того, как потратили четыре месяца жизни компании на выстраивание связей с этой страной. Так мы получилим первый урок о конкуренции: если какая-то ниша кажется лакомым куском, который никто не хочет брать, то скорее всего там есть какой-то подвох.

Однако за это время подоспел фронтэнд, у нас появился сайт и запустился маркетинг, который начал приносить первых клиентов. Этими клиентами оказались в том числе компании из США, Великобритании, Германии – в странах с высокой конкуренцией, которой мы так боялись. Зацепив их нашими конкурентными преимуществами, они с радостью шли на бесплатный тест и после легко выделяли бюджет на краулинг, получая однозначную ценность за меньшие деньги. И это оказался второй практический урок о конкуренции – не нужно бояться выходить на устоявшийся рынок, может оказаться, что клиенты там как раз ждут новых имен.

Отечественный рынок SEO

Помимо Европы и Америки мы продолжаем работать на отечественном рынке. В целом русскоязычный рынок seo весьма специфичный.

Исторически сложилось, что получить ссылки не сложно - всегда есть биржы с ссылками по любым ценам и это во многом сформировало направление мышления seo специалистов. В любой непонятной ситуации надо закупить ссылки, а если это не помогает - строить pbn сетки. Платить деньги за программы не очень принято, что обуславливает огромную популярность screaming frog - наличие крака.

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

Cтоковое фото
Cтоковое фото

Почему мы добавили анализ логов

Результаты краулинга показывали какие технические SEO ошибки мешают клиентскому сайту получать больше органического трафика, но не давали четкого конкретного понимания что с этим делать. Тогда мы обратились к лог-анализу.

Log analysis – очень популярная на Западе услуга анализа логов сайта. В России не очень любят log-анализ из-за его высокой цены, технической сложности и дефицита специалистов достаточного для ее проведения уровня. Заключается в том, что каждый раз когда поисковой бот бывает на странице вашего сайта, он оставляет об этом запись в логах. Если пошпионить за ним достаточно долго, хотя бы месяц (а в идеале полгода), и проанализировать эти записи, то можно отследить, на каких страницах поисковой бот бывает и как часто, а какие обходит стороной, и уже исходя из этих исследований делать оптимизацию.

Еще на своих проектах я начал собирать access логи и следить за тем, на каких страницах бывают пользователи и боты. О лог-анализе как таковом я слышал на конференциях и знал, что он есть у конкурентов, но тогда мне казалось, что это что-то очень сложное, профилактическое и глупо тратить на это свое время тогда, как нужно заниматься линкбилдингом.

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

Мы объединили краулинг сайта с log-анализом, и получили полную картину того, как именно поисковой бот сканирует сайт, на какие страницы тратит краулинговый бюджет, и самое главное, какие факторы влияют на его поведение, и что сделать для того, чтобы нужные страницы попали в индекс. Мы назвали это 2-D анализ. Результат этого 2-D анализа для нашего сайта оказался куда лучше чем все, что нам предлагали на рынке.

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

И чем больше мы проводили лог-анализов своим клиентам, тем больше мы убеждались в том, сколько неизведанного хранится в логах. Если в начале мы робко предупреждали клиентов, что “возможно вы увидете там неожиданные вещи”, то со временем пришли к более уверенному утверждению: “Результат точно вас удивит”. Еще не было ни одного крупного сайта без сюрпризов. Люди годами тратят бюджеты на одно, а лог-анализ дает понять, что дело может быть совсем в другом.

В целом я могу сказать, что горжусь результатами проделанной работы. За последний год мы просканировали 300 млн. страниц и проанализировали 6 млрд. лог-строк больших сайтов. Нашими клиентами были Auto.RIA, Template Monster, hh.ru, Preply, Work.ua и многие другие. Более подробно почитать о том, к каким выводам мы пришли, анализируя логи, вы сможете в моей следующей статье через неделю. Будет много графиков и инсайтов.

2828
42 комментария

Классно написано, классный продукт, пишите еще.

3
Ответить

Спасибо, Alexey.

1
Ответить

Первая статья о SEO на сайте которая реально крутая! Я даже не знал, что о SEO можно интересно писать! Спасибо.

1
Ответить

Лестно, спасибо. Спешу написать продолжение. Там вообще сок.

1
Ответить

То есть вы хотите сказать, что самостоятельно разработали краулер, аналогичный поведению поисковых роботов Google и Яндекс? Извините, но что-то я сомневаюсь в его эффективной работоспособности

1
Ответить

В чем сложность сделать краулер сайта?

1
Ответить

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

Ответить