Googleのトップページの検索ボックスにキーワードを入力して、検索を実行すると、検索結果が表示されますが、このときブラウザに表示されるURLを見ると、つぎのように「#」で始まる文字列が付加されます。
http://www.google.co.jp/#sclient=psy-ab&hl=ja&safe=off&source=hp&q=nekoya&pbx=1&oq=nekoya&aq=f&aqi=g-r4&aql=&gs_sm=e& gs_upl=3823l4772l0l5853l6l6l0l0l0l0l255l1087l0.4.2l6l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=34fd41f6997fa694&biw=1184&bih=653
この文字列は、一般にURLパラメータと呼ばれ、ブラウザから入力したデータをサーバーに送るために用いられます。Googleの場合、URLパラメータを使って検索エンジンに検索を要求します。このURLパラメータには、検索キーワード以外に、言語を指定するパラメータ等、検索エンジンの振る舞いを指定するための多様なパラメータがあります。一部のパラメータは公開(あるいは解析)されていますが、不明なパラメータも多くあります。
検索のために最低限必要なURLパラメータ
hl(インターフェース言語の指定)
fp(非公開)
pq(非公開 - 直前のキーワード)
URLパラメータを使って、Googleに検索を実行させるには、最低限、キーワード(q)のパラメータを指定すれば良いようです。たとえば、キーワード「Jazz」を検索する場合、ブラウザに以下のURLを入力することで、検索結果を表示することができます。
http://www.google.co.jp/#q=jazz
ここでの「インターフェース言語」とは、ページにメッセージやメニューなどのリンクを表示するために用いられる言語を意味します。通常、私たちは日本語のインターフェースのページを見ていますが、このパラメータを使って別の言語に変えることができます。たとえば、英語に設定するにはhl=eg、韓国語に設定するにはhl=koとします。
インターフェース言語 | hlパラメータ |
日本語 | ja |
英語 | eg |
中国語(Simplified) | zh-CN |
中国語(Traditional) | zh-TW |
韓国語 | ko |
フランス語 | fr |
イタリア語 | it |
ロシア語 | ru |
hlに設定可能な値の完全なリストはGoogleのGoogle Custom Search APIs and Toolsの
Supported Interface Languagesにあります。
たとえば、ロシア語のインターフェースを使って、「Jazz」というキーワードで検索するには、以下のURLを使います。
http://www.google.co.jp/#q=jazz&hl=ru
上記のURLを開くと、次のようにロシア語のインターフェースで検索結果が表示されます。

hl=jaに設定すると、以下のように表示されます(Google Japanではhlパラメータを省略しても良い)。

この二つの結果を比べると、hlパラメータはページのインターフェース言語変えるだけでなく、検索の結果にも影響を与えていることが分かります(インターフェース言語から推測して適切と思われる検索が行われる)。
hl=ruでは、最初にロシア語のWikipediaが表示されます。hl=jaでもWikipediaが表示されますが、最初ではなく二番目に表示され、しかもそれは日本語のWikipediaです。
hlパラメータは単独で指定することもできます。次のURLを開くと、Googleのトップページが韓国語で表示されます。
http://www.google.co.jp/#hl=ko
ここで注目すべき点は、Google Koreaではなく、Google Japanを開いている点です。インターフェース言語は各国にあるGoogleの(ローカライズされた)サイトとは無関係にURLパラメータによって設定されます。
ブラウザからURLパラメータを直接指定してGoogleを開くと、勝手にfpパラメータが追加されます。正確には、一旦、fpパラメータの無いURLを開いて、そこからfpパラメータの付いたURLに移動させられているようです。ブラウザの挙動を観察すると、ページを開きなおしているような動作が確認できます。ブラウザからのアクセスの場合、これが不都合になることはないと思いますが、簡易的なPerlスクリプトなどで自動的にGoogleにアクセスして検索したい場合、「ページを開きなおす」という処理の実装が面倒かもしれません。そこで、ページの開きなおしが発生しないような適当なfpパラメータを探してみました。
Googleを開いた状態から、URLパラメータを直接指定して検索を実行する場合に付加されるfpパラメータの値は、fp=6f4667bf19bc4710のように複雑ですが、他のサイトを開いた状態から、これを行うと、fp=1に設定されます。このことから、Googleが検索精度を高めるために、それまでの操作(検索内容など)を把握するような目的で用いられるパラメータではないかと推測しています。最初からfp=1を指定しておけば、ページの開きなおしは発生しないようです。
Googleの検索ボックスを使って検索を続けると、pqパラメータが追加されるのがわかります。このパラメータの仕様は非公開のようですが、挙動を観察すると、直前に検索したキーワードが設定されるようです。おそらく検索精度を高めるためのパラメータだと思います。