2010-11-28 5 views
1

通常のWebブラウザと同様に、スクレイパーやスパムロボットが構築されないという理由があります。このことを念頭に置いて、要注意を見るだけで大​​胆なスパムロボットを見つける方法があるはずです。スパムボットの検出に使用できるHTTPヘッダーフィールドはありますか?

HTTPヘッダーを分析する方法はありますか、これは単なるパイプドリームですか?

Array 
(
    [Host] => example.com 
    [Connection] => keep-alive 
    [Referer] => http://example.com/headers/ 
    [Cache-Control] => max-age=0 
    [Accept] => application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
    [User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7 
    [Accept-Encoding] => gzip,deflate,sdch 
    [Accept-Language] => en-US,en;q=0.8 
    [Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.3 
) 
+0

信頼できるシグネチャを持つボットはほんの数です。ほとんどのフォームスパムクローラーはリプレイ攻撃を実行するか、またはActiveXゾンビです。 (しかし、目標サイトに大きく依存しています。) 'Referer'-linkbotsはまれです。しかし、 "悪い行動"を見てください。 – mario

答えて

2

私はスパムボットを書いていた場合は、私は偽の通常のブラウザのヘッダは、私は、これは実行可能なアプローチである疑うでしょう。代わりに

  • は、それはあまりにも迷惑なんだ場合は、単純だが効果的なトリックは、CSSルールによって隠されているテキスト入力を含めることですキャプチャ
  • を使用する際に役立つかもしれないいくつかの他の提案。ユーザーはそれを見ることはできませんが、スパムボットは通常、すべてのCSSルールを解析して適用することはないので、フィールドが表示されていないことを認識せず、何かを入れます。フォームの提出がフィールドが空であることを確認し、フィールドがある場合は無視します。
  • あなたのフォームにノンスを使用します。フォームをレンダリングしたときに使用されたノンスが、送信時と同じであることを確認します。これはすべてを捕まえるわけではありませんが、投稿が最初にフォームを受け取ったものによって少なくとも作られたことを保証します。理想的には、フォームがレンダリングされるたびにノンスを変更します。
+0

ノンス= *ナンバー一度使用*。一回限りの*は毎回変わる必要があり、それはノンスではありません。そうでなければ、+1。 :) – deceze

+0

あなたはもちろん、正しいです:)しかし、間違ってやり直して、フォームが正常に送信されるまで(例えば、リロードした場合など)、それをやっていないよりも優れています。この場合、フォームビューごとに1回ではなく、フォーム提出ごとに1回使用されます。 –

+0

ノンスまたは「フォームトークン」を使用すると、CSFRも保護されます。フォームなしでフォームを表示しないでください。 – Xeoncross

1

この方法ですべてのボットを見つけることはできませんが、いくつかを捕まえるか、少なくともUAがボットになる可能性があり、別の方法と組み合わせて使用​​してください。

一部のボットは、Accept-CharsetAccept-Encodingのヘッダーを忘れています。 AcceptUser-Agentの組み合わせが不可能な場合もあります(IE6はXHTMLを要求しない、FirefoxはMS Officeタイプを宣言しないなど)。

プロキシをブロックすると、プロキシがヘッダーを変更する可能性があるため、プロキシに注意してください。 ViaまたはX-Forwarded-Forヘッダーが表示されている場合は、バックオフすることをおすすめします。

理想的には、ルールを手動で記述するのではなく、ベイジアン分類子を使用できます。関連するヘッダーを一緒に結合し、それらをクラシファイアの単一の「単語」として使用するだけで簡単にできます。

+0

アイデアありがとう – Xeoncross

関連する問題