扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在当今的网络环境中,大语言模型如 GPTBot 等可能会不顾网站死活进行高频率的抓取,这可能会对我们的网站性能和资源造成影响。为了保护我们的网站,我们可以采取一些措施来屏蔽这些大语言模型的抓取。以下是一些常见的方法:
在网站的根目录下创建一个 robots.txt 文件,添加以下内容:
User-agent: GPTBot Disallow: /
上述规则将禁止 GPTBot 抓取网站的所有页面。如果你只想禁止它抓取特定目录,例如 /templet/,可以这样写:
User-agent: GPTBot Disallow: /templet/
请注意,robots.txt 文件只是一种约定,并非所有的爬虫都会遵守这个规则,但大多数正规的搜索引擎爬虫会遵循它。
对于使用服务器端语言(如 PHP)的网站,可以在代码中添加逻辑来检测和阻止 GPTBot 的访问。以下是一个简单的 PHP 示例:
<?php
// 获取用户代理
$userAgent = $_SERVER['HTTP_USER_AGENT']?? '';
// 检查用户代理是否为 GPTBot
if ((strpos($userAgent, 'GPTBot')!== false) ) {
// 发送 HTTP 403 禁止访问状态码
http_response_code(403);
echo "Forbidden: Access not allowed.";
exit;
}
?>上述代码首先使用 $_SERVER['HTTP_USER_AGENT'] 获取用户代理,然后使用 strpos() 函数来检查用户代理是否包含 "GPTBot"。如果满足,将发送 HTTP 403 状态码并输出禁止访问的消息。这种方法可以有效地阻止 GPTBot 访问指定的页面。
如果你使用的是 Apache 服务器,可以在网站的根目录下的.htaccess 文件中添加以下内容:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} GPTBot [NC]
RewriteRule ^(.*)$ - [F,L]上述规则将使用 Apache 的重写引擎,当检测到用户代理为 GPTBot 时,发送 403 禁止访问状态码。[NC] 表示不区分大小写,[F,L] 表示发送 403 状态码并停止重写规则的处理。
如果你使用的是 Nginx 服务器,可以在 Nginx 的配置文件(通常是 /etc/nginx/nginx.conf 或相关的虚拟主机配置文件)中添加以下 server 块内的配置:
if ($http_user_agent ~* GPTBot) {
return 403;
}上述配置使用了 Nginx 的 if 语句和 $http_user_agent 变量,通过正则表达式 ~* 进行不区分大小写的匹配,如果用户代理包含 "GPTBot",将返回 403 禁止访问状态码。
需要注意的是,在 Nginx 中使用 if 语句时要谨慎,因为它可能会带来一些副作用,特别是在复杂的配置中。更推荐使用 map 块来实现类似的功能,以下是一个更复杂但更可靠的实现:
map $http_user_agent $block_agent {
default 0;
~*GPTBot 1;
}
server {
...
if ($block_agent) {
return 403;
}
...
}上述配置使用 map 块将用户代理映射到一个变量 $block_agent,如果用户代理包含 "GPTBot",则 $block_agent 的值为 1,然后在 server 块中根据该变量的值来决定是否返回 403 状态码。这种方法更具扩展性和可维护性。
通过这些方法,可以在一定程度上保护我们的网站免受大语言模型的过度抓取,确保网站的正常运行和资源的合理使用。

我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流