これを書いて思ったのは、検索サイトはどうやってAmazonのリンクを正規化しているのかというもの。
404 Blog Not Found:不都合なはてブこれのどこが問題かおわかりになるだろうか。
答えは、あっさり出た。
たとえば、本blogで先月一番売れた「数に強くなる」をぐぐると、Amazonのリンクが一位で私の書評が二位になる。
このAmazonのリンクに注目していただきたい。こうなっている。
数に強くなる - Google 検索www.amazon.co.jp/数に強くなる-畑村-洋太郎/dp/4004310636
実際には、日本語部分がURL Encodedされて、頭にhttp://がつくので
http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636
となるのだが、注意深く見れば、GoogleにおけるAmazonの製品リンクは、すべて
http://www.amazon.co.jp/製品名-著者ないしメーカー/dp/ASIN
という形式になっているのがおわかりになるはずだ。
私はてっきり、これはGoogle側で正規化処理をしているのだと思っていた。しかしGoogle側が正規化するのであれば、なぜ数ある製品リンクのうち、最短である
http://www.amazon.co.jp/dp/4004310636
に正規化しないのだろうか。
なんのことはない。よきに計らっていたのは、Amazon側なのである。
以下をご覧いただこう。
% HEAD -S http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 301 MovedPermanently HEAD http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636 --> 200 OK # ....
そう、正規化されたURIの方にRedirectされているのである。
しかし、なぜそれでは普通のブラウザーで見てもリダイレクトされないのだろうか。Amazonは User Agent をきちんと見ているのである。
% HEAD -S -H'User-Agent: Mozilla/5.0' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 200 OK # .... % HEAD -S -H'User-Agent: Opera/9.20' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 200 OK # .... % HEAD -S -H'User-Agent: /' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 200 OK # ....
このように、通常のブラウザーに対してはリダイレクトしないが、
% HEAD -S -H'User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 301 MovedPermanently HEAD http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636 --> 200 OK # .... % HEAD -S -H'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 301 MovedPermanently HEAD http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636 --> 200 OK # .... % HEAD -S -H'User-Agent: msnbot/1.0 (+http://search.msn.com/msnbot.htm)' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 301 MovedPermanently HEAD http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636 --> 200 OK # .... % HEAD -S -H'User-Agent: Baiduspider+(+http://www.baidu.com/search/spider.htm)' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 301 MovedPermanently HEAD http://www.amazon.co.jp/%E6%95%B0%E3%81%AB%E5%BC%B7%E3%81%8F%E3%81%AA%E3%82%8B-%E7%95%91%E6%9D%91-%E6%B4%8B%E5%A4%AA%E9%83%8E/dp/4004310636 --> 200 OK
Amazonにbot認定されているUser Agentはリダイレクトされる。デフォルトではリダイレクトなしだが、botのみリダイレクトするホワイトリスト方式である。ホワイトリスト、というよりbotにちなんで「メタルリスト方式」とでも呼ぼうか。
で、はてブの場合はどうか。
% HEAD -S -H'User-Agent: Hatena Bookmark/0.1' http://www.amazon.co.jp/dp/4004310636 HEAD http://www.amazon.co.jp/dp/4004310636 --> 200 OK
こういうことだったのである。
結局、Amazonの正規化は、Amazonにbot認定してもらえばいいだけの話なので、Amazonにそう伝えるか、はてブがbot認定されているUser Agentを名乗るかすればいい。冒頭で見たように、HEADコマンドのデフォルトのUser Agentはlwp-request/X.XX
。Amazonはbot認定済みである。
それにしても、なぜAmazonはbotに対してこのような正規化を行うのであろうか。
これぞ、SEOである。URL中に入った検索ワードというのは、非常に効果が高いのである。Wikipediaやはてなキーワードが検索で上位になる理由も、これが大きいと思われる。Pagerankのおかげで被リンク数がもてはやされるようになったが、Wikipediaの全てのページがあちこちからリンクされているわけではないし、Amazonの「テール」に至っては被リンク数はたかが知れているだろう。にもかかわらずそうしたページまで検索上位になるのは、これが最も決定的な理由ではないかと私は睨んでいる。
Amazonのこの対User Agent二枚舌戦略は見事といえば見事なのだが、気味が悪いと言えば気味が悪い。なにしろamazon.co.jpのページはShift_JISなのだ。bot向けURIはUTF-8なのに。
究極のSEO、それはURI中に検索文字列を仕込む事なのではないか。
Dan the User Agent Agent
初めてたった2週間の僕のblog(現在放置)が5位以内になりました。
というかbloggerで行ったので、Googleが甘く見てくれているのか?
切り分けが難しいですが。
ちなみにpyunicodeでURIを書くと、googleで検索ワードのstrong設定に
URIも含まれて(pyunicodeは日本語に変換されて結果に出る)いました。
次回エントリのURIをpyunicodeで試してみては如何?