阻止人工智能抓取你的内容一份快速指南
这是一份快速指南,探讨了一些阻止大型语言模型 (LLM) 抓取您的网站内容并将其整合到第三方模型中的实用方法。
TL;DR 使用这些配置
阻止方法依赖于 Web 服务器配置和防火墙规则。可以在Ichido 的静态文件服务器中找到预建配置,并且可以在此 Github repo或Ichido 软件库上的此镜像中找到配置生成器代码。这些配置旨在具有较低的误报率,并且已为多个 Web 服务器预建。
阻止已知的 AI 用户代理
阻止 AI 抓取的最简单方法之一是阻止已知的 AI 爬虫User-Agents
。爬虫通常在 HTTP 标头中标识自己,这通常是为了让网站更容易将爬虫添加到其允许列表中。但是,我们可以轻松地阻止相同的用户代理来防止 AI 内容抓取。例如,ChatGPT 在代表用户插件抓取和执行请求时使用 GPTBot和ChatGPT -User 用户代理。以下是许多不同 Web 服务器的一些基本用户代理阻止配置:
Apache
<Directory /> Options FollowSymLinks AllowOverride None Satisfy Any Allow from all RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^.*GPTBot.*$ RewriteRule . - [R=403,L] RewriteCond %{HTTP_USER_AGENT} ^.*ChatGPT-User.*$ RewriteRule . - [R=403,L] </Directory>
Nginx
if ($http_user_agent ~* "GPTBot") { return 403; } if ($http_user_agent ~* "ChatGPT-User") { return 403; }
Lighttpd
$HTTP["useragent"] =~ "GPTBot" { url.access-deny = ( "" ) } $HTTP["useragent"] =~ "ChatGPT-User" { url.access-deny = ( "" ) }
Caddy
@aibots { header "User-Agent" "*GPTBot*" header "User-Agent" "*ChatGPT-User*" } respond @aibots "" 403
我们可以通过使用curl
其中一个被阻止的 User-Agent 发出请求来测试这些配置。如果我们收到 403 响应代码,则 AI 机器人已被成功阻止。
curl -A GPTBot http://127.0.0.1:80/
对于无法访问 Web 服务器配置的网站管理员,另一种(尽管功能较弱)方法是使用文件阻止这些用户代理robots.txt
。Robots.txt 文件通过列出特定用户代理应该和不应该抓取的路径向抓取工具提供建议。由于只是建议,抓取工具可以自由忽略该文件,但其中许多抓取工具确实遵守 robots.txt 规则。
Robot.txt
User-agent: GPTBot Disallow: / User-agent: ChatGPT-User Disallow: /
阻止 AI IP 地址
一些 AI 机器人会提供 IP 地址范围和 CIDR 块,它们会从这些 IP 地址范围和 CIDR 块发送网络请求并抓取页面。作为附加措施,我们还可以阻止这些 IP 地址范围,以防止 AI 网站抓取。OpenAI 为GPTBot和ChatGPT-User提供了 IP 地址范围,可以使用以下iptables-persistent
规则阻止这些范围:
/etc/iptables/rules.v4
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # GPTBot -A INPUT -s 52.230.152.0/24 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 52.233.106.0/24 -p tcp -m state --state NEW -m tcp -j DROP # ChatGPT-User -A INPUT -s 3.98.142.176/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 0.84.180.224/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 3.65.240.240/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 0.97.189.96/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 0.161.75.208/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 2.225.75.208/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 2.156.77.144/28 -p tcp -m state --state NEW -m tcp -j DROP -A INPUT -s 0.84.180.64/28 -p tcp -m state --state NEW -m tcp -j DROP COMMIT
我们还可以通过阻止大型云提供商的所有 IP 地址来阻止许多其他不提供其 IP 地址范围的 LLM。许多 LLM 在云上运行,AWS、Azure和GCP提供其 IP 地址范围。但是,阻止这些范围会产生许多误报,因此请谨慎使用。
阻止 AI 数据集
即使 LLM 不直接抓取内容,也可能使用包含您的内容的第三方数据源。例如,许多 LLM 使用Common Crawl数据集训练其模型。Common Crawl 会定期抓取整个网络并将捕获的内容作为 WARC 文件保存在其 S3 存储桶中。Common Crawl 使用CCBot
User-Agent,我们可以阻止此 User-Agent 以防止内容包含在存档中。
Apache
RewriteCond %{HTTP_USER_AGENT} ^.*CCBot.*$ RewriteRule . - [R=403,L]
Nginx
if ($http_user_agent ~* "CCBot") { return 403; }
Lighttpd
$HTTP["useragent"] =~ "CCBot" { url.access-deny = ( "" ) }
Caddy
header "User-Agent" "*CCBot*"
Robot.txt
User-agent: CCBot Disallow: /
其他数据源
Dark Visitors维护着一个 AI 和机器人用户代理列表,并根据机器人类型进行分类。然而,在屏蔽其中一些用户代理时应小心谨慎,因为其中一些可能被错误标记(例如,CCBot 不是 AI 数据抓取器,但其数据通常用于训练 LLM)或没有完整记录。