GSA: Препарируем Google Search Appliance в виртуальной машине


Последние годы, с интересом почитывая о персональных поисковых системах в веселых желтых коробках имени Google, я периодически гуглил по словам GSA, Google Search Appliance, reverse engineering и, чего греха таить, hack, DIY, disk dump и т.п. Но ничего, кроме официальных пресс-релизов и переписки счастливых (?) обладателей с группой поддержки, я не встречал.

Иногда звучали на форумах робкие вопросы вроде «а как бы рута мне получить» или «попасть в GSA по ssh», но на все подобные вопросы ответ был один — только группа поддержки Google знает пароли. И никому не скажет. Удивительно, но я не встречал в интернете никаких попыток собрать «хакинтош» на движке Гугла, или по живому коду разобраться в алгоритме ранжирования страниц.

Ситуация слегка изменилась в 2008 году, когда на волне эйфории от виртуализации, Google выкатил VGSA – бесплатную виртуальную машину для Vmware с ограниченной до 50 тысяч документов лицензией. Впрочем, особого энтузиазма это в интернете не вызвало, в 2009 году проект был свернут и большинство ссылок в Гугле на VGSA стали возвращать 404 (заметьте – самим же Гуглом). Ссылку на релиз от 2008 года можно найти довольно легко. Ссылка на версию 2009 сохранилась лишь на паре китайских сайтов.

О том, как я поставил vgsa_20090210 на ESX 5.1 и увидел много чего интересного, можно прочитать ниже.

Пара слов о Google Search Appliance

GSA – это карманная поисковая система, способная индексировать сайты, любые документы и базы данных. Позиционируется как локальный Google для крупных компаний, которые хотят иметь свой локальный специфический поиск, но никому его не показывать (или показывать). Сама коробка – это молотилка, которая индексирует не только указанные в настройках URL-ы (http://, smb://), но и любые данные (Oracle, MySQL, etc), которыми ее можно накормить через API. Набивание GSA данными, помимо собственного http/smb паука, производится через так называемые коннекторы с открытым кодом, написанные под различные базы данных и файловые системы. Они свободно доступны через Google Code и управляются посредством Connector manager.

Установка

VGSA виртуальная машина собрана на базе CentOS 5 Final. После распаковки архива мы получаем стандартный набор vmx/vmdk файлов для Vmware Player. Так как версия уже устарела, поставить ее на ESXi 5.1, через Vmware Converter, не получилось. Была создана новая VM с базовыми настройками для Redhat 5 32b, 2 Gb памяти и мелким диском, который был тут же удален и подменен vmdk из VGSA (подключен как SCSI parallel BusLogic). Update: в комментариях пишут, что прекрасно запускается в VmWare Workstation 8.

После стандартного LILO пошла загрузка и появилась первая настораживающая надпись про шифрование:



Далее VGSA получила адреса по DHCP и появился ее стандартный экран:



По предложенному URL обнаружился нормально работающий гугловский движок, готовый к настройкам (с лицензией на 50 тыс. документов):



Для проверки проиндексировал первые 100 страниц хабра, со стандартной гугловской тактикой — 4 процесса на один домен/сайт. Краулер обходит все внутренние ссылки, а механизм индексации параллельно сортирует мусор и дубликаты. Одновременно это все ранжируется, считаются ссылки на страницу и из нее, каждой странице присваивается свой PR относительно корня (корень сайта всегда PR10) и тп.



Создав коллекцию интересных для меня сайтов (влкючить индексирование картинок пока не решился), быстро понимаю, что лимит в 50 тыс. страниц — это очень мало. Пора заглянуть под капот…

Под капотом

Пойманный на shift LILO, при любой попытке задать параметр просит пароль:



Еще раз беру дистрибутивный образ диска и смотрю его структуру. Fdisk ругается на незнакомый GPT, пробую parted:

[root@server /]# parted /home/vgsa/vgsa-flat.vmdk
GNU Parted 1.8.1
Using /home/storage/azureus/vgsa-flat.vmdk
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit b
(parted) p

Model:  (file)
Disk /home/storage/azureus/vgsa-flat.vmdk: 36507222015B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start        End           Size          File system  Name          Flags
 1      17408B       2147484159B   2147466752B   ext3         /
 2      2147484160B  4294967807B   2147483648B   linux-swap   swap
 3      4294967808B  36507205119B  32212237312B  ext3         /export/hda3

(parted)


Первый раздел стартует с 17408. Монтируем его:

# mount -t ext3 -o loop,rw,offset=17408  /home/vgsa/vgsa-flat.vmdk /mnt/vgsa


и получаем корень VGSA — пока без главного раздела /dev/hda3.
Смотрим lilo.conf на предмет пароля:

# grep pass /mnt/vgsa/etc/lilo.conf
password=cmBalx7


Теперь грузимся с init= /bin/bash, перемонтируем корень в rw (mount -o rw,remount /) и меняем пароль.
Заодно можно поправить iptables. В главном конфиге системы /export/hda3/5.2.0/local/conf/google_config есть параметр ENT_LICENSE_MAX_PAGES_OVERALL, который отвечает за максимальное количество проиндексированных страниц. Пробовал первое, что пришло в голову: telinit 1, поменять ENT_LICENSE_MAX_PAGES_OVERALL на 50 миллионов, затем sync и reboot. Удивительно, но система взлетела и показала новый лимит…

Вкратце об интересных местах, на которые пока не хватает времени:

/export/hda3/5.2.0/local/google3/quality/, а именно rankboost/indexing/rankboost_cdoc_attachment_pb.py:

Там есть очень интересный момент:

   self.link_count_ = 0
    self.offdom_link_count_ = 0
    self.paid_link_count_ = 0
    self.ppc_link_count_ = 0
    self.page_blog_score_ = 0
    self.page_wiki_score_ = 0
    self.page_forum_score_ = 0
    self.page_ppc_spam_score_ = 0
    self.has_link_count_ = 0
    self.has_offdom_link_count_ = 0
    self.has_paid_link_count_ = 0
    self.has_ppc_link_count_ = 0
    self.has_page_blog_score_ = 0
    self.has_page_wiki_score_ = 0
    self.has_page_forum_score_ = 0
    self.has_page_ppc_spam_score_ = 0


— много известных факторов ранжирования, но кое-что новенькое все же есть. Я подозревал, что рекламная PPC кампания может принести как пользу, так и вред в органической выдаче. В приведенном фрагменте видно, что Гугл учитывает поведение PPC кампаний. Пока остается только гадать, что такое PPC spam.
Много интересного в /export/hda3/5.2.0/spelling/. С форматом пока не разобрался, но навскидку – там базы Гугла по синонимам и спряжениям на разных языках. Там же коллекция стоп-слов и масса весьма забавных фильтров, иногда отдающих маразмом:

en.spelling.filter.dnc.utf8:#  Prevent correcting 'aryan' to 'jewish' or 'arabic'.


Вместо эпилога

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

Теперь, когда система из черного ящика превратилась в по-настоящему желтый — несколько мыслей о возможном ее применении:

  1. Понятен интерес с точки зрения SEO.
  2. Локальный поиск для сайта, когда система индексирует только один сайт и является мощной системой внутреннего поиска (например через iframe).
  3. Было бы интересно расширить функционал — например ввести в админе фильтр по ключевым словам. Чтобы спайдер собирал только страницы, в которых присутствуют определенные слова или фразы.
  4. Уверен, что это можно запустить и на железе, возможно с небольшим напильником в руке.
  5. … или в OpenVZ контейнере.
  6. … придумайте сами.


  7. С удовольствием выслушаю ваши мысли по этому поводу.
Share post

Similar posts

Comments 56

    +1
    Осталось проверить, подходит ли пароль к железкам
      +3
      Продолжение будет? )
        +4
        Интересно.
        Насколько я понял, движок 2009 года, соответственно на текущий момент мало актуален с точки зрения практического SEO 2013 года. Но очень интересно его использование с точки зрения парсинга сайтов и последующей обработки контента.
        Присоединюсь, «А продолжение будет?»
        И еще, не подскажите, где образ нашли?

          0
          hi.baidu.com/cayrus/item/06f4d90e03c95bc32f4c6bb1
          Такое впечатление, что везде информация была тщательно выпилена. Хотя непонятна причина неубивания образа на сервере Гугла…
            +1
            мало актуален с точки зрения практического SEO 2013 года


            С точки зрения черно-серого seo — да, малоактуально. Я даже больше скажу — движок лишен доступа к тем данным, которыми оперирует большой брат. Например история кликов на рекламу. Но даже поверхностный осмотр показывает участки кода, которые совершенно не нужны GSA. Они достались по наследству от девелоперов Самого и не работают при индексации. Но могут много о чем рассказать.
            +1
            интересно, что таке paid_link_count? купленные ссылки? как гугл их определяет? или это имеется ввиду адсенс?
            после прочтения статьи пока одни вопросы…
              +2
              Вопросы — это хорошо. Статья писалась именно для совместного поиска ответов )
              Нет, это не адсенс. Купленные ссылки всегда видны невооруженным взглядом — вы думаете у современных SE нет надежного алгоритма их определения? Да с первых дней появления такой проблемы. Я уверен, что это сделанo на системе treshold-ов, учитывающих время появления линка в контенте и других признаков. Периодическое подкручивание ручек этих treshold-ов и приводин к всяким пингвинам на пороге )
                +2
                окей…
                что содержат has_*? чем они отличаются от счетчиков?
                можно ли сделать вывод из найденой Вами информации, что для гугла важнейшим параметром при ранжировании является имеено перелинковка контента и внешние ссылки? (ни одного упоминания кейвордов, тайтлов и прочих seo-бубнов)
                При чем тут wiki? имеются ввиду ссылки с Википедии, или с внутренней вики индексируемого ресурса?

                PS: за отсутствием кармы (я новичок), плюсую буквами Вашему ответу и всему посту! Очень интересный материал! Спасибо!
              +2
              Быстро скачиваем и изучаем, возможно завтра и этого не останется.
              Скорее всего просто забыли удалить.
              Спасибо, давно мечтал поковырять нечто подобное.
                +1
                А не пробовали уже перебирать в имени файла 20090210 далее? Может что-то посвежее завалялось?
                  0
                  Да, можно попробовать простым скриптом… Но я думаю, что свежее нет. Проект закрыт в 2009.
                    +1
                    попробовал только что, увы свежее ничего нет(
                      +2
                      Перебрал с 2008 года, доступные версии:
                      20081028
                      20090108
                      20090210
                      • UFO just landed and posted this here
                          0
                          Только 7z, внутри образ для VMware, так что нет смысла img и iso проверять.
                          • UFO just landed and posted this here
                      +7
                      Выложите-ка итоговый образ куда-то на торренты. Дайте и другим немного поковыряться :)
                        0
                        Поддерживаю
                          +1
                          magnet:?xt=urn:btih:89388ACE8C3B91FDD3A2F86D8CBB78C58A70D992&dn=vgsa_20090210.7z&tr=udp%3a%2f%2ftracker.publicbt.com%3a80
                            +2
                            Это исходный образ диска, а после вышеуказанных в статье модификаций?
                        +6
                        На всякий случай я просто оставлю это здесь: dl.google.com/vgsa/vgsa_20090210.7z
                        Если нужны будут зеркала, пишите.
                        +4
                        Хочу странного: описание алгоритмов в упомянутых краулере и ответчике. Как краулер составляет индекс? Как поисковая машина формирует ответ на запрос? Ну и так далее. Вот если бы кто-то сделал такой обзор — было бы круто!
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                              +2
                              Это в Readme написано — дефолтный пароль на админ интерфейс http_://address:8000. Он меняется прямо в админе.

                              Welcome to the Google Search Appliance virtual edition!

                              Unzip the file to get the virtual machine disk image. We recommend
                              using 7zip (http://www.7-zip.org/) to extract the archive.

                              Once running, you can access the Administration Console of the virtual search
                              appliance at http://:8000, where is the IP address of the virtual
                              appliance.

                              You can log into the Administration Console with:

                              Username: admin
                              Password: j0njlRXpU5CQ

                              For question and feedback, please contact:

                              enterprise-gsa-virtual@google.com
                              • UFO just landed and posted this here
                              +8
                              Начал читать купившись на фразу
                              и увидел много чего интересного с точки зрения СЕО

                              Оказалось это хитрый SEOшный трюк :)
                                +1
                                Не совсем ) Одной из целей этого квеста был именно поход за «настоящими» базами английских слов от доверенного источника — с перекрестными связями по синонимам и признаком релевантности одного слова другому. Я их, судя по всему, нашел — и они вкусные, но к моменту дописывания статьи, пока не смог разобрать из скомпилированного вида во чтото удобоваримое.
                                  +1
                                  Я совершенно не преуменьшаю ваше достижение, наоборот — снимаю шляпу, со всем уважением.
                                  Кроме того, я ни чего не имею против SEO и тех кто им занимается.

                                  Просто у вас перед катом SEO написано по-русски как CEO, что в свою очередь является общеупотребительным сокращением от Chief executive officer .
                                  Вот мне и стало любопытно, что же такого может быть интересного внутри гугловской виртуалки для руководителя компании?
                                  Ну а в конце, смайлик как бы говорит, — «да без проблем, я понял что это обычная описка».
                                    +2
                                    Я исправил, действительно офицерам тут делать нечего )
                                0
                                Кто поможет, застрял на этапе: «Загрузившись в /bin/bash и перемонтировав корень в rw»?
                                Все время получаю монтирование read-only.
                                  +2
                                  Так монтируете: mount -n -o remount,rw /
                                  ?
                                    0
                                    deleted
                                    +2
                                    Для проверки проиндексировал первые 100 страниц хабра, со стандартной гугловской тактикой — 4 процесса на один домен/сайт.

                                    когда я краулил хабр пол года назад — третий параллельный коннекшен ломал весь процесс загрузки. Как только хабр видит что с одного ip адреса кто-то делает больше 2-ух запросов — дропает все.

                                    Вместо эпилога

                                    я думаю мало кто в коммерческих фирмах согласится на внедрение подобной системы с разными переделками, даже средняя девелоперская для внутреннего использования. Нарушение закона об авторских правах как ни как, «перепилить гугл» это вам не фотошоп крякнутый поставить. Секретов в этой коробке хватает.
                                      +2
                                      Ну, хак есть хак, согласен. Мелкий прикладной интерес — возможно. Насчет секретов — секреты не вылкадывают в откытый доступ. Это все-таки не Гугл. И даже не кастрированная ее версия. Так, обвязанный скриптами спайдер, созданный теми, кому доступно тайное знание…
                                      0
                                      VMWare Workstation 8.0 радостно подхватила образ кстати, без всякой конверсии. Насчет 9.0 — нет чтобы проверить.
                                        0
                                        Скорее всего тоже подхватит, а вот в ESXi надо делать экспорт из WS.
                                          0
                                          Хм. Попытался сменить пароль рута — сменился без проблем.
                                            0
                                            В конфиге iptables прекрасное —
                                            ## ppp0
                                            -A OUTPUT -o ppp0 -p tcp -j ACCEPT
                                            
                                            # Enable SSH from the modem
                                            -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
                                            

                                            Удаленный саппорт по модему?
                                              0
                                              В железках они вроде как и по модему могут саппорт делать. Чтото такое читал в мануалах на сайте. Меня в iptables почему-то умилил комментарий про высокие порты и мы, дескать, nobody )
                                                +1
                                                Там много забавного
                                                [root@ent1 ~]# cat /export/hda3/5.2.0/local/conf/AdminConsole_ipwhitelist
                                                127.0.0.1/32
                                                216.239.43.0/24
                                                

                                                216.239.43.0/24 — Google AS15169
                                              0
                                              Да, сейчас еще раз попробовал на свежем образе — меняется. Дело было ночью, может привиделось )
                                                0
                                                Подробно не ковырял, но кажется мне что редактирования ENT_LICENSE_MAX_PAGES_OVERALL для поднятия лимита недочтаточно, как то не-энтерпрайзово это… обычно лицензия запрятана куда как глубже и хитрее, учитывая что основные мозги системы написаны как раз не на Питоне.
                                                Оно конечно баловство, никто всерьез эту штуку в 2013 юзать не будет имхо, но интересно.
                                                  0
                                                  Были такие сомнения. Там есть два питоновских файла, которые пропускают через себя все связанное с лицензией. Завязано на API. Но с другой стороны — судя по тому, как все сделано… Такое ощущение что это были игрушки для кого-то, сделали, заработало и забыли. А чтобы чтото серьезно прятать — дел и так хватает умным людям.
                                                    0
                                                    Оно конечно баловство, никто всерьез эту штуку в 2013 юзать не будет имхо, но интересно.

                                                    А как же горячие головы, готовящиеся к всеобщему катаклизму?
                                                    На деле — применение можно найти. Мне там нравится в админе фича, где можно задать авторизацию через обычную форму логина. Тоесть можно проиндексировать закрытые сайты, от которых есть логин и которые обычные SE посмотреть не могут. Да и для документов очень полезная штука.
                                                      +1
                                                      Мммм… Ну для «напоиграться» для 1 человека или маленькой фирмы — можно, но скорее всего им хватит и 50К документов. Поиск масштаба предприятия на неподдерживаемом решении никто делать не будет.
                                                      А что касается горячих голов… Ну так не Гуглом единым. Есть Apache Solr, к нему куча краулеров — и родной Nutch и сторонние. Все опенсорс, развивается уже почти 10 лет. На основе Lucene можно легко какую нить децентрализованную систему замутить, хотя их и так хватает
                                                +1
                                                Интересно, что гугл до сих пор хостит vgsa_20090210.7z.
                                                  +1
                                                  Отчего ж не хостить такой троян?)
                                                    +1
                                                    Кто мешает Вам осмотреть, куда лезет данная виртуалка?
                                                    Ну или вообще запретить ей выходить в интернет?
                                                    +2
                                                    Спросонья мозг не совсем корректно работает. Пришла мысль, почему образ VGSA лежит на серверах Гугла.
                                                    А может это изощренный способ хантинга умных программистов?
                                                    Типо, залез во внутренности песочницы Гугла 2009 года… сделал чего нибудь эдакое, а потом где нибудь в коде находишь, ну или через web морду выдается: «Ваша кандидатура крайне заинтересовала нас. Напишите нам на job@google.com с пометкой Hack VGSA».
                                                      0
                                                      Тогда их внезапно ожидает хабра-эффект…
                                                        –4
                                                        все гораздо проще: в больших системах, таких как Гугль, Фейсбук или Контакт — сам контент не уничтожается, только внешние ссылки на него, убирается все из поискового индекса.
                                                      0
                                                      то есть питоновский код там не скомпилированный?
                                                        0
                                                        Я не силен в питоне, честно говоря, — меня хватило только на то, чтобы вставить logging в подозрительные места одного из .py скриптов, которые обрабатывали лицензию и генерировали файл конфигурации. Часто там лежат рядом .py и .pyc версии. Может это вам о чем-то скажет.

                                                      Only users with full accounts can post comments. Log in, please.