Anubisは受信HTTPリクエストの「魂の重さ」を測り、AIクローラーなどの自動スクレイピングを止めるリバースプロキシ型の防御ツールです。ポリシーファイルでUser-AgentやIPレンジ、ヘッダーを判定し、疑わしいクライアントにはProof-of-Work等のチャレンジを課します。
cmd/anubis/main.goがHTTPサーバーを起動し、lib/configとlib/policyが読み込むYAMLポリシーに基づいてリクエストをALLOW・DENY・CHALLENGEに分類します。ポリシーの実体はdata/botPolicies.yamlやdata/bots、data/crawlers配下のYAMLファイル群です。CHALLENGE判定されたクライアントはブラウザ上でJavaScriptまたはWASM実装のProof-of-Workを解く必要があります。解答に成功するとed25519かHS512で署名したJWT Cookieが発行され、以降のリクエストは背後のオリジンサーバーへ転送されます。decaymapパッケージはチャレンジ状態を一定時間で失効させる仕組みを持ちます。cmd/robots2policyコマンドを使うと、robots.txtをAnubis用ポリシーYAMLに変換できます。
- STEP 01
Makefileかgo buildでcmd/anubisをビルドすると、単一のanubisバイナリが生成されます。
- STEP 02
--policy-fnameでYAMLポリシーを指定して起動すると、8923番ポートでHTTPを、9090番ポートでメトリクスを待ち受け始めます。
- STEP 03
一般的なブラウザでアクセスすると、UAが疑わしい場合はチャレンジ画面が出て、PoW計算後にCookieが付与されて元のサイトへ通されます。
- STEP 04
UAを機械的な文字列に変えてcurlでアクセスすると、DENYかCHALLENGEの応答が返り、JS未実行では先に進めません。
- STEP 05
internal/test配下のPlaywright統合テストを動かすには、別途npx playwright run-serverとvalkey起動が必要で、環境構築に手間がかかります。
- STEP 06
cmd/robots2policyでrobots.txtを読み込ませると、既存の禁止設定をAnubis用YAMLへ変換できます。
手元にはリバースプロキシとして動くanubisバイナリと、豊富な既製ボット判定ポリシー群(data/bots、data/crawlersなど)が残ります。自サイトの前段にAnubisを置けば、AIクローラーのアクセスをチャレンジで足止めする効果が得られます。
Playwright統合テストにはnpxやvalkey、ブラウザバイナリなど追加インストールが要るため、フル再現には手間がかかります。
Windowsサービス版のbootstrap_windows.goによれば、anubis.envは多ユーザー環境で他ローカルユーザーからも読み取り可能な点が明記されています。
判定はUser-Agent文字列やIPレンジに依存するため、UAを詐称する巧妙なスクレイパーへの効果はポリシー精度次第です。
自サイトをAIクローラーの過剰アクセスから守りたい運用者向けのリバースプロキシで、既製ポリシーを使えばすぐ試せます。README・実ソース(main.go、bootstrap_windows.go、テスト群)から機能と制約が具体的に読み取れるため、導入前の判断材料として十分に信頼できます。