web-dev-qa-db-ja.com

Google検索でインデックス化された画像の透かし入りバージョンを取得し、ユーザーがサイト上できれいな高品質の画像を一度表示できるようにするにはどうすればよいですか?

私は、焦点の多くが画像そのものであるサイトを持っています。 AdSense広告が表示された状態でWebサイトに直接アクセスすると、画像は通常の高品質で表示されます。

ロボットが画像にアクセスすると、透かしが入ったバージョンが表示されます。この理由は、サイトの写真家が高品質の写真を撮るのに時間を費やし、それから利益を得ることができればいいからです。

私が1か月間試したのは、ユーザーがクリックしたときに透かしの付いた画像にスタンプが付けられてからウェブサイトについての詳細を知ることができるように、透かしの付いたバージョンの画像にGoogleでインデックスを付けることです。問題は、単一の透かし入り画像がインデックス付けされていないことです。

過去に私がやったことは、誰もが同じ方法で画像を見ることができるようにすることで(変更なし、透かしなし、高品質)、すべての画像にインデックスが付けられました。私のウェブサイトや広告を見なくても、人々は単にGoogleから画像をダウンロードすることができるので、それは間違いだとわかりました。

どちらの場合も、有効なURLを指すサイトマップを送信しましたが、noindexまたはnoimageindexロボットタグを使用せず、画像へのアクセスを拒否するためにrobots.txtを使用しませんでした。

Googleで透かしを入れた画像にインデックスを付ける方法はありますか?

5
Mike

ここに記事があります これについて、彼らがそれを実装する方法を説明しています。自分のサイトで完全な画像を表示しますが、Google画像検索では透かし入りバージョンのみを表示します。

基本的な手法は、HTTPリファラーとユーザーエージェントに基づいて、提供するバージョン(透かしまたはクリーン)を選択することです。

  1. HTTPリファラーが自分のサイトからのものである場合は、クリーンバージョンを表示します。
  2. HTTPユーザーエージェントがボットの場合、クリーンバージョンを表示します。
  3. 他のすべてのリクエストは、透かし入りバージョンを取得します。

これにより、Googlebotはクリーンバージョンを表示できます(したがって、ランク付けできるようになります)が、ユーザーがサイトにアクセスして初めてクリーンバージョンが表示されるようになります。

1

理想的な方法は、nginxレベルでこれを処理することです。

このようなことをしてください:

  • ページがリクエストされた場合== "/images/watermark.jpg"
  • Useragent == botの場合
  • (内部)を「/images/bot/watermark.jpg」などのように書き換えます

ステップ1

これをnginxの設定に追加してください。

map $http_user_agent $limit_bots {
     default 0;
     ~*(google|bing|yandex|msnbot) 1;
     ~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
     ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
     ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
     ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
     ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
     ~*(Twengabot|htmlparser|libwww|Python|Perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
 } 

ステップ2

ロケーションブロックでボットを次のように確認します(これは一般的なもので、watermark.jpgのみを確認することもできます)

location / {
    if ($limit_bots = 1) {
              rewrite ^/images/(.*).(png|jpg|gif) /images/bot/$1.$2 ;
            }
}

1
skbly7

コメントで既に述べた理由のため、あなたはそれをするべきではありません。ユーザーエージェント文字列でフィルタリングできます。ボットが提供する約300の一般的なユーザーエージェントのリストは、 http://www.robotstxt.org/db.html にあります。そのリストを実行して、表示するものを決定します。しかし、すべての写真でこれを行うのですか?ログを確認して、どのボットが訪問しているかを確認し、それらのボットのみを確認することもできます。ただし、すべての画像にマークを付けて、支払い後にのみ高品質を提供することをお勧めします。

ユーザーエージェントのストーリーは次の場所での答えです: https://stackoverflow.com/questions/422969/how-to-recognize-bots-with-php

0
Terradon