CoderCastrov logo
CoderCastrov
Технология

Когда-нибудь оказывались на последней странице результатов поиска в Google?

Когда-нибудь оказывались на последней странице результатов поиска в Google?
просмотров
4 мин чтение
#Технология
Table Of Content

В любую секунду примерно 50 000 запросов делается в Google. Это ~ 4,32,00,00,000‬ запросов в течение 24 часов, что составляет 55% от общего населения мира! Источник Если мы не видим ожидаемых результатов на первой странице или, в крайнем случае, на второй странице, мы склонны изменить запрос вместо того, чтобы перейти на третью страницу.

Page one of search results

Учитывая текущую ситуацию с распространением COVID-19, однажды вечером я решил посетить не вторую, даже не третью, а последнюю страницу результатов поиска в Google. Пока я просматривал забытые результаты после третьей страницы, качество результатов начало ухудшаться.

Интересно, когда я добрался до последней страницы результатов, я заметил, что количество результатов поиска не совпадает с количеством результатов поиска, показанных на самой первой странице!

Page one of search results

Последняя страница:

Last page of search results Last page of search results

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

Но почему Google делает это? Ну, Google не дает вам столько результатов поиска для просмотра, сколько заявлено на первой странице, но предоставляет лучшие результаты на первой странице, как любой другой поисковик. Давайте разберемся, ПОЧЕМУ.

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

Google search

Раньше, до примерно 2012 года, на сайте Google Webmaster Tools было опубликовано официальное заявление:

"Расчет Google общего количества результатов поиска является приблизительным. Мы понимаем, что приблизительная цифра имеет ценность, и предоставляя приблизительную оценку вместо точного подсчета, мы можем возвращать качественные результаты поиска быстрее."

В итоге поисковые системы делают это уже давно. В основном потому, что это значительная нагрузка на серверную сторону, которая не сочетается с качеством вывода. Чтобы грубо объяснить: предположим, что пользователь вводит поисковый запрос - например, кошки собаки. Когда пользователь нажимает кнопку поиска, фоново запрос делится на индексы (представьте, что запрос делится на 2 строки - "кошки" "собаки") и передается на несколько серверов. Серверы отвечают за поиск лучших 10 результатов для каждого индекса/части запроса, переданного им, и определение топ-10 результатов. Топ-10 результатов со всех серверов затем передаются на координирующий сервер, который выполняет быструю сортировку собранных результатов и возвращает полученные топ-10 пользователю. Если то же самое делается, например, для четвертой страницы, серверам теперь придется отбросить топ-29 результатов и вернуть результаты с 30 по 40 на координирующий сервер, который в свою очередь выполнит быструю сортировку полученных результатов, отбросит топ-30 результатов и вернет последние 10 пользователю на четвертой странице.

Как видите, для этого требуется гораздо больше вычислительных мощностей, чем просто получение топ-10 результатов на первой странице. Теперь представьте, что это делается для 1,84,00,000 результатов!

Также следует учесть качество результатов поиска, которое начинает ухудшаться по мере продвижения вниз по кроличьей норе. Таким образом, учитывая вычислительную мощность и качество результатов, на 2020 год Google ограничивает количество результатов поиска, которые могут быть показаны пользователям, до ~200-300.


Все это приемлемо для обычного поиска в Google. Однако в моем случае я разработал инструмент (парсер) в качестве личного проекта, который полностью полагался на количество результатов поиска, предоставленных Google!

Как и любой другой парсер, программа требовала отправной точки для начала парсинга. После получения поискового запроса в Google программа посещала каждый веб-сайт, указанный в результате, определяла, построен ли он на WordPress, и находила установленные на них темы. Написал код, создал потоки и запустил его с VPS.

Допустим, у нас есть следующий поисковый запрос:

Search query

И согласно нашему предположению, что мы можем просматривать все 18,40,000 результатов, как заявлено Google, программа должна идеально парсить URL-адреса, найденные во всех 18,40,000 результатов поиска. Однако, как мы видели выше, количество результатов поиска, которое предоставляет Google, значительно меньше, чем то, что мы видим на первой странице результатов для любого заданного поискового запроса.

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

Google Dorks

Инструмент в действии:

Tool in action

Ссылка на инструмент.


Мораль здесь очень похожа на то, что история учила нас снова и снова - Внешность может быть обманчивой!

Ссылки: