Что такое Google web preview

Один из методов, которые я использую для фильтрации ботов от реальных пользователей, — это проверка агента пользователя. После обнаружения я блокирую IP-адрес, который они используют. Я вижу, что довольно много посетителей приходят со встроенным в их пользовательский агент «Google Web Preview» (пример):

mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko; google web preview) chrome/41.0.2272.118 safari/537.36

Когда я проверяю IP-адреса, связанные с этим пользовательским агентом, они, похоже, не связаны с Google. Все это просто домашние IP-адреса, поступающие со всего мира. Когда я слежу за пользователем на своем веб-сайте, я замечаю, что его агент пользователя меняется на, как только он продолжает просматривать мой сайт:

mozilla/5.0 (ipad; cpu os 10_3_3 like mac os x) applewebkit/602.1.50 (khtml, like gecko) gsa/33.0.164895372 mobile/14g60 safari/602.1

Вопрос: это бот или Google использует посетителя для создания предварительного просмотра? IP ведет себя так же, как обычный пользователь (например, щелкает по ссылкам, заблокированным robots.txt).

Direct Print without print preview on google chrome

Источник: question-it.com

Роботы поисковых систем

По нижеперечисленным именам можно идентифицировать поисковых роботов в логах сервера. Стоит также помнить, что не редко злоумышленники подделывают «User-Agent» и вписывают туда идентичные поисковым роботам данные. Для проверки валидности поискового робота можете использовать инструмент «Валидатор ботов». Укажу только ссылки на официальные описания основных ботов, так как нет смысла переписывать официальное описание на русском языке.

Кому вопрос о существующих роботах наиболее актуален и интересен, есть большая база по всевозможным ботам «Udger». На этом сайте описаны известные им роботы с указанием IP адресов, Хостов и примеры строк в User-Agent. На текущей странице я указываю тех ботов, которых встречал в логах нескольких сайтов.

Лайфхакер рассчитать платежи по ипотеке Google таблицы

Google

Официальная страница с описанием: Поисковые роботы Google

Опубликованные

  • Googlebot
  • Googlebot-News
  • Googlebot-Image
  • Googlebot-Video
  • Mediapartners-Google или Mediapartners
  • AdsBot-Google
  • AdsBot-Google-Mobile-Apps

Не опубликованные

  • GoogleImageProxy
    Используется для кэширования изображений с сайта. Сканирует только изображения.
  • Google Web Preview
    Пока точно не известно какую роль выполняет данный робот.
  • googleweblight
    При просмотре сайта с медленных источников Интернета Google предлагает посмотреть упрощенную версию веб-страниц. Эта «приписка» как раз свидетельствует, что использовался подобный просмотр. Для примера можно использовать сервис http://googleweblight.com/?lite_url=URL_сайта .
  • Google Page Speed Insights
    Посещение при анализе сайта с помощью сервиса «PageSpeed Insights» — https://developers.google.com/speed/pagespeed/insights/?hl=ru
  • Google-Structured-Data-Testing-Tool
    (посещение при анализе сайта с помощью сервиса «Проверка структурированных данных» — https://search.google.com/structured-data/testing-tool?hl=ru)
  • Google Favicon
    (Всегда делает запросы по методу GET. Пока точно не известно какую роль выполняет данный робот. Инициализируется запрос на сайт с подобной записью, если запросить URL https://www.google.com/s2/favicons?domain=site.ru)
  • Google-Adwords-Instant
    (при использовании в Adwords типа быстрого просмотрщика объявлений. Необходимо проверить теорию!)
  • Google_Analytics_Snippet_Validator
    (это посещение остается загадкой, сам лично я не нашел связей, в Интернете тоже «тишина»)
  • Google-Site-Verification
    (используется при проверке прав на владение сайтом, судя по всему нужно только для добавления сайта в Вэбмастер. Загружает страницы проверки и главную страницу)
  • Google PP Default
    (это посещение остается загадкой, сам лично я не нашел связей, в Интернете тоже «тишина»)
  • Google-SearchByImage
    (Инициализируется посещение при выполнении поиска картинки через «Google Картинки»)
  • Google Search Console
    (пока неизвестно, выяснить!)

Advanced Preview Configuration — Google Web Designer

Яндекс

  • YandexBot
  • YandexAccessibilityBot
  • YandexMobileBot
  • YandexDirectDyn
  • YandexScreenshotBot
  • YandexImages
  • YandexVideo
  • YandexVideoParser
  • YandexMedia
  • YandexBlogs
  • YandexFavicons
  • YandexWebmaster
  • YandexPagechecker
  • YandexImageResizer
  • YandexAdNet
  • YandexDirect
  • YaDirectFetcher
  • YandexCalendar
  • YandexSitelinks
  • YandexMetrika
  • YandexNews
  • YandexNewslinks
  • YandexCatalog
  • YandexAntivirus
  • YandexMarket
  • YandexVertis
  • YandexForDomain
  • YandexSpravBot
  • YandexSearchShop
  • YandexMedianaBot
  • YandexOntoDB
  • YandexOntoDBAPI
Как скачивать с Google video

Mail.ru

  • Mail.RU_Bot
  • Mail.RU_Bot/Fast
  • Mail.RU_Bot/Img
  • Mail.RU_Bot/Robots

Bing

Официальная страница с описанием: Основные поисковые роботы Bing. Эта поисковая система предоставляет сервис «Проверить Bingbot», с помощью которого можно узнать принадлежит ли IP адрес бота поисковой системе Bing.

  • Bingbot
  • MSNBot
  • MSNBot-Media
  • AdIdxBot
  • BingPreview

Yahoo

  • Yahoo! Slurp

Источник: seo.klimin-viktor.com

Search Preview — расширение для Chrome

Данное расширение предоставляет возможность просматривать сайт результата поиска в Google, что значительно сокращает время на поиск и обработку информации.

image

Предыстория

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

Разработка

Благодаря тому, что в Google Chrome поддерживалась технология HTML5 (а именно iframe sandbox), реализовать расширение не составило труда и за один вечер был написан прототип. Я несомненно был рад этому, но было печально за других людей, которые тоже были жертвами закрытия Instant Preview. Поэтому решил выложить в открытый доступ расширение.

Само расширение базировалось на возможности загружать в iframe любую страницу при этом атрибут sandbox позволял отключать javascript и редирект главного окна т.е. нельзя было выполнить из iframe такой код:

top.location = ;

И всё было хорошо пока на некоторых сайтах не встречался заголовок запрета к отображению в iframe «X-Frame-Options», это было ещё пол беды, но когда Google Chrome в новой версии запретил загружать на защищённом сайте незащищённый контент, т.е. нельзя было внедрить на сайте https данные в том числе и iframe http. В результате чего большая часть сайтов не отображалась в iframe. Пользователи начали жаловаться, расширение стало не справляться со своей задачей, опять приходилось переходить прямиком на сайт из результатов поиска, всё вернулось на начало.

Google что такое уин
Поиск решения

Но меня это не остановило, было интересно решить данную проблему. Первое что пришло на ум использовать web proxy, т.е. в iframe загружать данные не напрямую с сайта, а через web proxy по защищенному протоколу https тем самым решалась проблема с незащищенным контентом, а также web proxy мог обрезать заголовок X-Frame-Options.

На разработку своего web proxy не хотелось тратить время, задачу нужно решить быстро. Немного погуглив я наткнулся на данный скрипт google-proxy — это web proxy для appengine написан на python. Установив его и выкатив новую версию расширения, я не надолго забыл о проблеме. Но проблема пришла вновь в виде нехватки бесплатной квоты appengine, пришлось делать несколько зеркал для web proxy.

Сделав четыре зеркала казалось, что всё хорошо, но в отзывах расширения мне написали, что опять появляется ошибка нехватки квоты. В appengine квота обнуляется каждые 24 часа, т.е. в то время когда я пользуюсь расширением квоты еще хватает, а вот для жителей другого края света квота уже исчерпана.

Свой web proxy

Немного подумав я решил всё таки потратить время на написание web proxy и выбрал язык Go. На освоение языка Go ушло немного времени, т.к. до этого я писал на нём небольшие скрипты в обучающих целях. Но с разработкой web сервера на Go не сталкивался. Почитав документацию и выбрав в качестве web инструмента gorillatoolkit, а именно роутер gorilla/mux. Писать роутер довольно легко:

r := mux.NewRouter() r.HandleFunc(«/env», environ) r.HandleFunc(«/web_proxy», web_proxy.WebProxyHandler) r.PathPrefix(«/»).Handler(http.StripPrefix(«/», http.FileServer(http.Dir(staticDir)))) r.Methods(«GET»)

Дальше для замены ссылок и адресов, чистки html выбрал библиотеку gokogiri это оболочка к libxml. Нужно было все адреса (url) зароутить на мой web proxy скрипт. Потом отключил некоторые теги полностью удалив их из DOM в том числе и тег script.

Резервное копирование Google как отключить

Интерактивность preview сайта не нужна. CSS были тоже обработаны, т.к. там встречаются url картинок, шрифтов и т.д.

Получается такой меппинг тегов при обходе DOM вызывается функция соответствующая тегу.

var ( nodeElements = map[string]func(*context, xml.Node) < // proxy URL «a»: proxyURL(«href»), «img»: proxyURL(«src»), «link»: proxyURL(«href»), «iframe»: proxyURL(«src»), // normalize URL «object»: normalizeURL(«src»), «embed»: normalizeURL(«src»), «audio»: normalizeURL(«src»), «video»: normalizeURL(«src»), // remove Node «script»: removeNode, «base»: removeNode, // style css «style»: proxyCSSURL, >xpathElements string = createXPath() includeScripts = []string < «/js/analytics.js», >cssURLPattern = regexp.MustCompile(`urls*(s*(?:[«‘]?)([^)]+?)(?:[«‘]?)s*)`) )
func filterHTML(t *WebTransport, body, encoding []byte, baseURL *url.URL) ([]byte, error) < if encoding == nil < encoding = html.DefaultEncodingBytes >doc, err := html.Parse(body, encoding, []byte(baseURL.String()), html.DefaultParseOption, encoding) if err != nil < return []byte(«»), err >defer doc.Free() c := for _, node := range(nodes) < name := strings.ToLower(node.Name()) nodeElements[name](c, node) >> // add scripts addScripts(doc) return []byte(doc.String()), nil >
func filterCSS(t *WebTransport, body, encoding []byte, baseURL *url.URL) ([]byte, error) < cssReplaceURL := func (m []byte) []byte < cssURL := string(cssURLPattern.FindSubmatch(m)[1]) srcURL, err := replaceURL(t, baseURL, cssURL) if err == nil < return []byte(«url(» + srcURL.String() + «)») >return m > return cssURLPattern.ReplaceAllFunc(body, cssReplaceURL), nil >

Также были отфильтрованы cookie, заголовок X-Frame-Options и выставлен кеш на 24 часа.
Web proxy решено было установить на heroku, также подумывал об openshift, но насколько мне известно там ограничение на количество соединений.

Решение на heroku + Go меня полностью устроило и нет никаких проблем на квоты никто не жалуется (по сравнению с appengine), с марта месяца как говорится полёт нормальный.

Расширение

Расширение работает хорошо, добавил кнопки zoom. С зумированием была ещё та история, сразу пошёл по неверному пути и применил к iframe CSS transform scale, пришлось каждый раз как изменится зум или главное окно, вычислять размер iframe по новой. Но потом встретилось довольно простое решение:

Правовая характеристика национальности компании Гугл как юридического лица

zoom: %;

Fulltext search подсветка

Решение было найдено в виде стеммера Портера, а именно его реализации в виде snowball, также была применена библиотека xregexp и аддон Unicode для создания токена, который передавался стеммеру. Я не стал писать алгоритм определения языка для стеммера, а применял стеммер для разных языков к токену и в случае успеха стеммер возвращал true.

Инструменты

В качестве языка я выбрал coffeescript, мне он нравится похож на питон, но есть свои недочёты. За сборку dev и production версии отвечает gulp. Очень простой сборщик, большое количество plugin’ов. Не малую часть времени я потратил на изучение и допиливание gulpfile.coffee, зато это оправдывается скоростью сборки. Также в сборке участвует browserify.

P.S. ах, да! Чуть не забыл про ссылку на расширение.

  • chrome extension
  • search preview

Источник: habr.com

Рейтинг
Загрузка ...