2011-07-06 11 views
5

コマースウェブサイト(ASP.NET MVC)のコンテンツは、競技会によって定期的にクロールされます。これらの人々はプログラマであり、洗練された方法を使用してサイトをクロールし、IPで識別することは不可能です。 残念ながら、値を画像で置き換えることはオプションではありません。なぜなら、サイトはスクリーンリーダー(JAWS)によって読み込み可能なままでなければならないからです。クローラからのウェブサイトコンテンツの保護

私の個人的な考えは、robots.txtのを使用している:(:http://example.com?itemId=1234禁止:http://example.com?itemId=123 128の下で、これは通常のアイテムの詳細リンクを装ったが、通常のユーザーの有効なURLから隠すことができます)ページに一つの共通のURLにアクセスしてからクローラーを禁止します。 IP所有者が禁止リンクを入力した場合は、CAPTCHA検証を表示します。 通常のユーザーは、表示されないためこのようなリンクをたどることはありません。偽装されているため、クロールする必要はありません。この問題は、スクリーンリーダーがまだリンクを読み取っているため、これが効果的で実装する価値があるとは思わないことです。

+4

あなたの競技会が異なるプロキシを使用するのに十分な気がするなら、どうして彼らはあなたのロボットについて気にする必要がありますか? – Jacob

+0

スクリーンリーダーで読み取った隠し文字で、「このリンクを無視してください」と言ってみませんか? –

+0

+1いい質問です。 –

答えて

2

あなたの考えは、いくつかの基本的なクローラではうまくいく可能性がありますが、非常に簡単に回避できます。彼らはちょうどプロキシを使用し、新しいIPから各リンクを取得する必要があります。

ウェブサイトへの匿名アクセスを許可すると、データを完全に保護することはできません。多くの時間と労力をかけてクローラを防ぐことができたとしても、人間はフィドラーのようなものでコンテンツをブラウズしてキャプチャすることができます。競合他社があなたのデータを見られないようにする最良の方法は、あなたのウェブサイトの公開されていない部分に置くことです。

ユーザーを強制的にログインさせると、少なくともあなたのサイトをクロールしているユーザーを拾い上げることができます。

0

私はクローラから自分のコンテンツを保護する段階に近づいています。

私は、匿名ユーザーがWebサイトの内容を限定し、完全な機能を登録するように要求しています。

例:あなたは今のユーザーを知っているので

public ActionResult Index() 
{ 
    if(Page.User.Identity.IsAuthorized) 
     return RedirectToAction("IndexAll"); 

    // show only some poor content 
} 

[Authorize(Roles="Users")] 
public ActionResult IndexAll() 
{ 
    // Show everything 
} 

、あなたが任意のクローラを罰することができます。

+0

これは、検索エンジンをクロールできるものに限定しておきたい場合に便利です。 –

+0

それはウェブサイト自体に依存します。つまり、検索エンジンが最初にあなたのウェブサイトにユーザーを誘導してから登録することができます。 –

0

前述したように、公にアクセス可能なデータを特定のユーザーから隠すことは実際には不可能ですが、自動クローラーであるため、ページのレイアウトを定期的に変更することにより、人生をより困難にすることができます。

異なるマスタページを使用して同じ(または類似の)レイアウトを作成することはおそらく可能です。マスターページをランダムに交換することができます。これにより、自動クローラの書き込みが少し難しくなります。