
Predator は、アンチクローリング、アンチオートメーション、ボット検出の各手法を実演するために設計されたプロトタイプの Web アプリケーションです。 ハニーポット、アンチクローリングシステム、または脆弱性スキャナの誤検知テストベッドとして使用できます。
警告: ここで実演されている手法を、その正確な動作を理解せずに本番サーバーで使用することは強くお勧めしません。Web アプリケーションに応じて有効と思われる手法のみを実装すべきであることを忘れないでください。Predator は手法のコレクションであり、そのコードをそのまま使用すべきではありません。
以下のマインドマップは、ここで実演されている手法を本番環境にどのように実装できるかを大まかに示したものです。

注記: 「Observation Phase」の数値と要素は、クライアントにレピュテーションを設定するために使用でき、しきい値に達すると、悪意のあるアクティビティの強力な指標として使用できます。
ボットが送信する HTTP ヘッダーは、実際のブラウザと比較して順序が異なることが多く、またはまったく欠落していることがよくあります。多くのボットは倫理上の理由から User-Agent ヘッダーで身元を明かしますが、まったく送信しないボットもいます。
ここで説明されている HTML 変異(mutation)手法のほとんどは、selenium や puppeteer などのブラウザベースのフレームワークで回避できますが、isBot.js に実装されているようなさまざまなテストで検出できます。
ほとんどのボットは Web ページと画像にのみリクエストを送信しますが、.css などのリソースファイルは、使用中の HTTP 実装によってダウンロードされないため、無視されることがよくあります。Web ページ/画像とそのようなリソースファイルの比率が事前定義されたしきい値より高くなると、ボットを検出できます。
クローラーで使用される多くの HTML パーサーは、ブラウザのように壊れた HTML を処理できません。たとえば、ブラウザで次のリンクをクリックすると page_1 に移動しますが、影響を受けるパーサーは後者の値、つまり page_2 を解析します。
<a/href="page_1"/href="page_2">Click</a>
これは、ユーザーエクスペリエンスに影響を与えずにクローラーを遠ざけ、禁止するために使用できます。
一部のリンクは CSS を使用してユーザーから隠されていますが、自動化プログラムはそれらをまだ見ることができます。これらのリンクは、ボットを検出し、 IP アドレスの禁止などの望ましいアクションを実行するために使用できます。
Predator は、訪問者をボットと疑った場合、さらに多くのランダムリンクを含むページ(limbo.php)へ誘導するランダムリンクをランダムな数だけ生成し、このプロセスが繰り返されます。
脆弱性スキャナは通常、ペイロードを入力し、Web アプリが特定の方法で応答するかどうかを確認します。Predator は、期待される応答、つまりシグネチャを HTML 内に含めることで、脆弱性があるふりをすることができます。
Predator は現在、以下の脆弱性を模倣します。
この方法により、実際に脆弱なコードをホストすることなくハニーポットをセットアップすることが可能になり、誤検知テストのテストベッドとして機能します。
PatheticGeek が、Predator を見栄えよくするためのフロントエンドの魔法をすべて担当しました。