robots.txtを無視するAIボットへの対策【完全版】
robots.txtを無視するAIボットが存在する
「robots.txtにDisallow: /を設定したのに、AIボットのアクセスが止まらない」という声が増えています。実際、主要AIクローラーの中にはrobots.txtを遵守しないものが存在します。
2024年〜2025年にかけて問題になった主なケース:
- Bytespider(ByteDance/TikTok):robots.txtを無視してクロールを継続したと複数のサイト運営者が報告
- CCBot(Common Crawl):学術・研究目的と主張するが、実態はLLMトレーニングデータ収集が主目的
- その他の新興AIクローラー:User-Agentを偽装するケースも確認されている
なぜrobots.txtだけでは不十分か
robots.txtは「紳士協定」に過ぎず、法的拘束力はありません。主なリスクは以下の通りです:
- 遵守義務なし:robots.txtはHTTP標準ではなく、あくまでガイドライン
- User-Agent偽装:一般ブラウザを装ってクロールするケースがある
- 新興ボット:登場したばかりのクローラーはrobots.txtのルールを知らない/無視する場合がある
対策① サーバーサイドでのハードブロック
robots.txtに頼らず、サーバーレベルでUser-Agentを検査してブロックします。
Next.js Middleware(推奨)
import { NextRequest, NextResponse } from "next/server";
// 問題のあるボットを含む包括的なリスト
const AGGRESSIVE_BOTS = /Bytespider|CCBot|Diffbot|DataForSeoBot|MJ12bot|SemrushBot/i;
const AI_BOTS = /GPTBot|ClaudeBot|PerplexityBot|Google-Extended|Amazonbot|cohere-ai/i;
export function middleware(req: NextRequest) {
const ua = req.headers.get("user-agent") ?? "";
// 悪質ボットは即403
if (AGGRESSIVE_BOTS.test(ua)) {
return new NextResponse("Forbidden", { status: 403 });
}
// AIボットはcheck APIで判定(Pro機能)
// または一律403を返す
if (AI_BOTS.test(ua)) {
return new NextResponse("Forbidden", { status: 403 });
}
return NextResponse.next();
}
export const config = {
matcher: ["/((?!_next|favicon.ico|api).*)"],
};
Nginx設定
map $http_user_agent $is_bad_bot {
default 0;
~*Bytespider 1;
~*CCBot 1;
~*GPTBot 1;
~*ClaudeBot 1;
~*PerplexityBot 1;
~*Google-Extended 1;
~*Amazonbot 1;
~*Diffbot 1;
}
server {
if ($is_bad_bot) {
return 403;
}
}
対策② IPアドレスベースのブロック
User-Agentを偽装するボットに対しては、IPアドレスレンジでのブロックが有効です。主要なクラウドプロバイダーのIPレンジを確認し、不審なデータセンターIPからのアクセスをブロックします。
# Cloudflareルール(Firewall Rules)
# データセンターASNからのアクセスで、通常のブラウザUAでないものをブロック
(ip.geoip.asnum in {396982 15169 16509} and not http.user_agent contains "Mozilla")
対策③ アクセス監視と証拠保全
法的対応を視野に入れる場合、アクセスログの保全が不可欠です。AI Access MonitorのPro機能「訴訟証拠ログ」では、robots.txt違反アクセスを自動検知・記録します。
記録される情報:
- アクセス日時(UTC)
- ハッシュ化されたIPアドレス
- User-Agent文字列
- アクセスされたURL
- robots.txt違反フラグ
- 所属ASN・組織名
対策④ 法的通知(cease and desist)
証拠が揃ったら、相手企業の法務部門またはプライバシーチームへ正式な通知を送ることができます。多くの大手AI企業はコンテンツ削除・学習データからの除外リクエストフォームを設けています。
- OpenAI:
privacy@openai.comまたは専用フォーム - Google:Search Console → AI学習除外設定
- Common Crawl:
info@commoncrawl.org
対策⑤ 使用料を請求する(HTTP 402)
ブロックの代わりに「アクセスは許可するが有料」という戦略もあります。HTTP 402(Payment Required)を返してライセンス料の支払いページにリダイレクトする方法です。
AI Access MonitorのPro機能でこのコードを自動生成できます。詳細はこちら
まとめ:多層防御が基本
| 対策 | 効果 | 労力 |
|---|---|---|
| robots.txt | △(遵守ボットのみ) | 低 |
| Middleware/Nginx UA検査 | ◎(ハードブロック) | 中 |
| IPブロック | ○(偽装対策) | 高 |
| アクセス監視・証拠保全 | ◎(法的対応準備) | 低(ツール活用) |
robots.txtだけに頼らず、複数の層で防御することが現実的な対策です。AI Access Monitorで今すぐ監視を始めましょう。