web-dev-qa-db-ja.com

リンクをクリックするボットを検出する方法は?

URL短縮サービスを所有しています。正当な統計のみをクライアントに提供したい。特定のユーザーが短縮URLを自動的に開くスクリプトを作成することで、統計情報の見た目が悪くなる可能性があります。クリックが正当かどうかを検出するために使用できるアプローチは何ですか?私が考えることができる非常に基本的なアプローチは、ユーザーのIPアドレスを監視し、要求の数がしきい値を超えた場合にブロックすることです。

2
Ishan Jain

ボットと人間を区別するために使用できる潜在的な方法はいくつかありますが、どれも100%とは言えません

言うまでもなく、レート制限は人間の速度でクリックすることを知らない本当に愚かなボットを捕まえます。 IPごとに1クリックと言うこともできますが、プロキシの背後にいる人間の場合、統計が人為的に収縮します(IPv4アドレスがなくなると、より一般的になります)。

IPブロッキングはクラウドコンピューティングの時代にはあまり有用ではありません。十分な専用性があれば、攻撃者が別のIPまたはIPの範囲を取得するのは非常に簡単です。

@fasが言うように、ユーザーエージェントを試すことができますが、それでも、ユーザーエージェントを設定する方法がわからないボットだけがキャッチされます。これはそれほど難しくありません。

クリックプロセスにいくつかの「コンピュータハード」タスクを導入することもできますが、その場合、サイトはかなり使い勝手が悪くなります(CAPTCHAなど)。ここでも100%ではありませんが、簡単に克服することは困難です。

結局のところ、攻撃者の動機付けや資金に依存することをお勧めします。彼らがやる気があり、現金を持っている場合、実際の人を雇ってリンクをクリックするだけで(たとえば、Amazon Mechanical Turrk経由)、その時点で、正当なトラフィックと非正当なトラフィックを区別するのが難しいことに気付くでしょう。

攻撃者がそれについてよりカジュアルであると想定すると、ユーザーエージェントとソースIPアドレスを組み合わせると思います。ユーザーエージェントは実際には比較的識別している可能性があります(詳細については panopticlickサイト をご覧ください)。したがって、各ユーザーエージェントを送信元IPアドレスごとに1回のクリックに制限すると、比較的洗練されていない攻撃者に対してまともな近似を得ることができます。

5
Rory McCune

上記のオーエンの答えは、私が試した非常に低い技術だがシンプルで効果的な何かを思い出させました。ボットが私のクリック統計をいかにひどく歪めているかを知るために-私のアフィリエイトバナーグラフィックのすぐ隣に-私は、hrefタグでラップされている1ピクセルの透明なgifを持っています。ボットだけがその非表示のリンクをクリックしていると想定しても安全だと思うので、アフィリエイトバナーと透明な1ピクセルのgifリンクのクリック数を比較するだけです。

1
Joeinfo

有効なユーザーエージェントとリファラーを確認してください。ユーザーエージェントは常に偽装される可能性がありますが、それが最善の策です。ボットがクリックスルーしていても、そのトラフィックを考慮します。

0
d1str0

私がこれについて考えたばかりの小さな方法(そしておそらくそれは以前に行われたでしょう):

リンクがマウスでクリックされると、イベントが生成され、リンクがクリックされたときのポインティングデバイスの位置を返すプロパティclientXと別のclientYも含まれます。

クリックイベントのECMAScriptトリガーを使用してリンクがクリックされた場合、clientXおよびclientYプロパティは両方とも設定されません

クリックイベントを中断し、clientXまたはclientYが設定されているかどうかを確認すると、リモートで発生したイベントの検出を開始できます。もちろん、これには、アプリケーションがすでに正当に使用している可能性があるトリガーされたクリックイベントを効果的に無効にし、「有効な」クリックと「無効な」クリックを区別する何らかの方法を作成する必要があることを解決するという欠点があります。認証エンジンをクリックします。

これは非常に基本的なアイデアであり、私はそれを磨いたり、十分にテストしたりはしていませんが、おそらくあなたにとって役立つでしょう。機能性を強調する大まかなCodePenデモを作成し、実行する可能性のあるコードの単純なバージョンを示しました。

タッチデバイスでは確認していません。タッチイベントでもこれらのプロパティが返されない場合があります。これが効果的に機能する場合は、タッチデバイスで確認する代替プロパティを見つける必要があるかもしれません。

青空の考え方に関しては、それほど悪くはありませんが、クリックジャッキングを回避するためのより適切なアプローチを形成するのに役立ちます。

http://codepen.io/seajones/pen/vminB

0
Owen