Особенности поиска google, firefox и языка клиента. Написать свой поисковый плагин для firefox. Firefox and google search


Особенности поиска google, браузера firefox и языка клиента. Пишем свой поисковый плагин для firefox.

Уже давольно давно замечал разницу в результатах поиска на разных серверах гугла.
И вот задался вопросом, от чего зависит этот результат, и как мне получить другой результат.
Выяснилось, что выдача результатов поиска в google зависят от массы параметров.
Выяснилось так же, что поисковый плагин браузера Firefox основательно «подигрывает» гуглу, передавая серверу дополнительные параметры запроса.

Разница серверов:

Ни для кого не секрет, что серверов у google великое множество.
И на каждом из них — свои результаты поиска по одному и тому-же запросу.
Причем, если вы в России и основной язык вашего браузера (о языке браузера — см ниже.) русский,
то вы введя URL http://google.com на google.com не попадете, а будете переадресованы на http://www.google.ru
Однако, если запрос составить нонкретно http://google.com/search?q=net4me ,то получете ответ с того сервера,
который для вас считается google.com в данный момент.

$ ping google.com
PING google.com (64.233.187.99) ...
64 bytes from jc-in-f99.google.com (64.233.187.99) ...

$ ping google.ru
PING google.ru (66.249.93.104) ...

А «в данный момент», потому что это тоже величина не постоянная и изменяющаяся.
Продолжаем.

Язык браузера:

Изменим наш запрос. Добавим параметр hl (human language):
http://google.com/search?q=net4me&hl=ru
http://google.com/search?q=net4me&hl=en
Чувствуете разницу?
На самом деле, при одном только запросе, вы передаете гуглу массу параметров.
Например:
aq
oq
complete
hl
newwindow
client
rls
hs
И так далее.
Вот с этими-то переменными мы и будем экспериментировать.

Едем дальше.

Браузер firefox:

Посмотрим встроенный поисковый плагин фаерфокса:


<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Google</ShortName>
<Description>Google Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,R0lGODlhEAAQAPfLAAATVikwdA8SnxUfgAsWpAAilholjxw4jB
c7kwAlvQQ2sRMsoBUqqhMzuhY/vxw4tSgmiyM1mSUztiQ6sTE3sQ4qyxMxxRoyxiAuxR1CtBxJsBxasSJuuTFguBte0Rlf2xVc9h9W9xVjzxVr0
gdj6BRh4R1o5yBcyiZbyydT1i9b2Ddb1iFY6CJg2Vpor1dzvEJu20Z0yi23QDy1REi2OUy0O1WzOVC4PU+tVUe5Sk2xQU2zRUO4UE21Ula2SmKE
qWWF2HyPx2+a6X6e6Xqk1m+s78sUDs4UGdEQB9YfDdwaANEfHd0YEscjAM4mAM0qANIoD9IkGdslGswuItYgL4aP0ImP2YGZ36Opzaq2wq/S+rz
X/7/e8MrS1MLO/sTb48rT8snX/83c89PZ+crq+cH1/9Dl/9Ln/93r/9fy/+Hf7P/42eDm/O7u/+T29uX2/eT2/+f4/+f5/+j/9u//8+3/9u7/9u
r5/+j//+n//+v//u3//+7//e7//+////b66/T/6vX/6/f/7f/07fj/4fv/4Pj/5v/45v7/4/r+7/3/6fDw+Pfx//D/9/X/8fT/8/f/8ff/8/D//
/H///L8/fL///P///X7//b6/ff/+/T///b9//f///v19//w9v/09P/29v/x+f/y///z///1+v/1///2///3//j79P/58/z/8/z99/z/9v7/9P7/
9vn7//v6//j9//n9//j///n///v//vv////4+v/5+//6+P/4///6/P/6/v/6///7///9+P/8+v/9+v7/+Pz////8/f/9/f79///8///9//7////
//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAA
MsALAAAAAAQABAAAAj/AEn4oIFjBw8bOnrMuJGjhowZM1T8UdYJUZ5ZcNRYWjSrVK5QU0DMmtUnzRAXEy4o6FCEy6NDTkQIq1MmRgM0eZTlCXMg
QJtRSE4gmgUkwh1EiZTNUiamy6NUUExcuoJgDCdDjQg9KgVL2SNFT1hwEvKglLBWuixZ+jSrlSBdRlL04bBBkTBdpZTpIqWsFaBcTEr0QaEhl6d
WlswKW6poDRUPlmAUQKWMkTJLc76QMQNGUZMWgIgkCFJnlq5WXigwkFClVZQQyuRgELAlk7JBymCZGYAF0ZEPrQixgUDAihxVdPpoAZAFUZIRfT
hxgvPCwAILDipk+OFG2ZIVoxApERtPfvwlvZ+kQFzPvv0MJQEBADs=</Image>
<Url type="application/x-suggestions+json" method="GET"
template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&qu={searchTerms}"/>
<Url type="text/html" method="GET" template="http://www.google.com/search">
<Param name="q" value="{searchTerms}"/>
<Param name="ie" value="utf-8"/>
<Param name="oe" value="utf-8"/>
<Param name="aq" value="t"/>
<!-- Dynamic parameters -->
<Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/>
<MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/>
</Url>
<SearchForm>http://www.google.com/firefox</SearchForm>
</SearchPlugin>

И попробуем на его основе написать свой поисковый плагин для фаерфокса:

$cd ~/.mozilla/firefox/Наш_профиль.default/searchplugins
$vi net4me_search_en.xml

И пишем самое простое, что пришло на ум:

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Net4me ENGLISH in Google</ShortName>
<Description>Net4me ENGLISH Search by Ben-Ja</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,Qk02AwAAAAAAADYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAA
DEDgAAxA4AAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/4AA/4AA/4AA/8aM/8aM/8aM/8aM/8aM/wAA/wAA/4AA/4AA/4AA/8aM/
8aM/////////////////////////////////////wAA/4AA/4AA/8aM/8aM////////////AAD/AAD/AAD/AAD/AAD/AACCgID//////wAA/4AA
/8aM////////////////////////AACCAAD/AAD/AACCgID//////////wAA/4AA/8aM////////////////////////AACCAAD/AAD/AACCgID
//////////wAA/8aM////AAD/AAD/AAD/AAD/////AAD/////AAD/AAD/AAD/AAD/gID//////wAA/8aM////AAD/////////////////////AA
CCAAD/AAD/AACCgID//////////wAA////////////AAD/////////////////AACCAAD/AAD/AACCgID//////////wAA////////////////A
AD/////////////AACCAAD/AAD/AACCgID//////////wAA/8aM////////////////AAD/////////AACCAAD/AAD/AACCgID//////////wAA
/8aM////////////////////AAD/////AACCAAD/AAD/AACCgID//////////wAA/4AA/8aM////////////////////////AACCAAD/AAD/AAC
CgID//////////wAA/4AA/8aM////////////////////////AAD/AAD/AAD/AACCgID//////////wAA/4AA/4AA/8aM/8aM//////////////
//////AAD/AAD/AACCgID//////////wAA/wAA/4AA/4AA/4AA/8aM/8aM////////////////AAD/gID//////////////wAA/wAA/wAA/wAA/
wAA/wAA/wAA/wAA/4AA/4AA/4AA/8aM/8aM/8aM/8aM/8aM</Image>
<Url type="text/html" method="GET" template="http://google.com/search">
<Param name="q" value="{searchTerms}"/>
</Url>
<SearchForm>http://www.google.com/search</SearchForm>
</SearchPlugin>

То есть не передаём вообще никаких параметров кроме «q» то есть самого запроса.
Проверяем. Работает!

Кстати, от кодировки обращения к google поисковику и кодировки «отдачи» (параметры «ie» и «oe», как я понял, ни что иное как «input» и «output» encoding)
Изменяя эти параметры — мы тоже будем получать различные результаты запроса от google:
Попробуем переписать наш поисковый плагин ff для русского языка:


<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>net4me.netSSIAN in Google</ShortName>
<Description>net4me.netSSIAN Search by Ben-Ja</Description>
<InputEncoding>windows-1251</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,Qk02AwAAAAAAADYAAAAoAAAAEAAAABAAAAABABgAAAAAAAADAA
DEDgAAxA4AAAAAAAAAAAAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/4AA/4AA/4AA/8aM/8aM/8aM/8aM/8aM/wAA/wAA/4AA/4AA/4AA/8aM/
8aM/////////////////////////////////////wAA/4AA/4AA/8aM/8aM////////////AAD/AAD/AAD/AAD/AAD/AACCgID//////wAA/4AA
/8aM////////////////////////AACCAAD/AAD/AACCgID//////////wAA/4AA/8aM////////////////////////AACCAAD/AAD/AACCgID
//////////wAA/8aM////AAD/AAD/AAD/AAD/////AAD/////AAD/AAD/AAD/AAD/gID//////wAA/8aM////AAD/////////////////////AA
CCAAD/AAD/AACCgID//////////wAA////////////AAD/////////////////AACCAAD/AAD/AACCgID//////////wAA////////////////A
AD/////////////AACCAAD/AAD/AACCgID//////////wAA/8aM////////////////AAD/////////AACCAAD/AAD/AACCgID//////////wAA
/8aM////////////////////AAD/////AACCAAD/AAD/AACCgID//////////wAA/4AA/8aM////////////////////////AACCAAD/AAD/AAC
CgID//////////wAA/4AA/8aM////////////////////////AAD/AAD/AAD/AACCgID//////////wAA/4AA/4AA/8aM/8aM//////////////
//////AAD/AAD/AACCgID//////////wAA/wAA/4AA/4AA/4AA/8aM/8aM////////////////AAD/gID//////////////wAA/wAA/wAA/wAA/
wAA/wAA/wAA/wAA/4AA/4AA/4AA/8aM/8aM/8aM/8aM/8aM</Image>
<Url type="text/html" method="GET" template="http://google.com/search">
<Param name="q" value="{searchTerms}"/>
<Param name="ie" value="windows-1251"/>
<Param name="oe" value="windows-1251"/>
</Url>
<SearchForm>http://www.google.com/search</SearchForm>
</SearchPlugin>

#====================================
#
# Edit by Ben-Ja http://net4me.net
# On Fri 21 Mar 2008 04:42:19 PM MSK
#
#====================================

Статья пока не дописана до конца!
То есть это — черновик, который будет дорабатываться.

Если у Вас возникло желание что-то добавить к сказанному выше,
То вы можете оставить свой комментарий в обсуждении этой статьи.