您的robots.txt可能对ChatGPT隐藏了您的站点以下是如何在10分钟内检查

很多网站把这个加到了robotstxt在过去两年的某个时候:

User-agent: GPTBot

Disallow: /

User-agent: ClaudeBot

Disallow: /

User-agent: *

Disallow: /api/

如果您不想让您的内容用于训练模型,这是一个合理的选择。https://www.iissbbs.com但许多团队也有CDN规则、WAF设置或更进一步的一揽子“阻止AI机器人”开关。没有任何人决定,该网站也从人工智能中消失搜索:ChatGPT搜索,困惑,克劳德的网页搜索。

人工智能公司现在运行单独的机器人,用于训练、搜索索引和在用户要求时获取页面。你可以区别对待每一个。大多数网站没有,因为名字不明显。

哪个机器人做什么

来自每个公司自己的文档:

公司 机器人程序 这是干什么用的 如果你挡住它

OpenAI公司 GPTBot 培训用数据 内容不应该被用来训练OpenAI的模型

OpenAI公司 OAI-SearchBot ChatGPT搜索 不显示在ChatGPT搜索答案中,但导航链接仍然会出现

OpenAI公司 ChatGPT-User 当用户询问时获取页面 OpenAI表示,https://www.ycsjb.com因为这些是用户发起的robotstxt规则可能不适用

人类的 ClaudeBot 培训用数据 培训中排除的未来内容

人类的 Claude-SearchBot 搜索索引 可能会降低您在Claude搜索结果中的可见性

人类的 Claude-User 当用户询问时获取页面 Claude无法为该用户检索您的页面

谷歌 Google-Extended 双子座培训和基础 谷歌说是的不影响谷歌搜索的收录或排名

困惑 PerplexityBot 困惑的搜索索引 未出现在困惑搜索结果中

有两件事很突出。

谷歌的人工智能概述不在名单上。它们是由谷歌机器人抓取的普通搜索索引构建的。Google-Extended控制双子座的训练和基础,而不是你是否出现在人工智能概述中。阻止Googlebot进入人工智能概述会让你完全退出搜索。

训练和搜索是分开的开关。OpenAI的文档写得很清楚:一个站点可以允许OAI-SearchBot在禁止时出现在搜索结果中GPTBot让它的内容远离训练。

一个robotstxt,让你在人工智能搜索中,但在训练之外

如果这就是你想要的交换:

# Search and user-requested fetches: allowed

User-agent: OAI-SearchBot

User-agent: ChatGPT-User

User-agent: Claude-SearchBot

User-agent: Claude-User

User-agent: PerplexityBot

Disallow: /api/

Disallow: /admin/

Allow: /

# Model training: blocked

User-agent: GPTBot

User-agent: ClaudeBot

User-agent: Google-Extended

Disallow: /

# Everyone else

User-agent: *

Disallow: /api/

Disallow: /admin/

Sitemap: /sitemapxml

一个容易犯的错误是:爬虫只跟随与其名称最匹配的特定组忽略了User-agent: *完完全全。所以你为每个人阻挡的任何路径(/api/, /admin/)必须在每个命名组中重复,如上所述。否则,命名的机器人可以访问它。

是否屏蔽培训是商业决策,而不是技术决策。一些公司希望他们的文档包含训练数据,以便模型能够正确描述他们的产品。关键是要有意识地做出选择。

用脚本测试它,而不是通过阅读它

用眼睛阅读robotstxt就是上面的错误如何在代码审查中幸存下来的。Python的标准库可以解析它:

# check_robotspy

from urllibrobotparser import RobotFileParser

SITE = ""

BOTS = [

    "GPTBot", "OAI-SearchBot", "ChatGPT-User",

    "ClaudeBot", "Claude-SearchBot", "Claude-User",

    "Google-Extended", "PerplexityBot", "Googlebot", "Bingbot",

]

PATHS = ["/", "/blog/", "/pricing", "/api/health", "/admin/"]

rp = RobotFileParser(f"{SITE}/robotstxt")

rpread()

width = max(map(len, BOTS))

print(" " * width, *[pljust(12) for p in PATHS])

for bot in BOTS:

    row = ["allow"ljust(12) if rpcan_fetch(bot, SITE + p) else "BLOCK"ljust(12) for p in PATHS]

    print(botljust(width), *row)

输出是一个你可以在几秒钟内读懂的网格:

                /            /blog/      /pricing    /api/health  /admin/

GPTBot          BLOCK        BLOCK        BLOCK        BLOCK        BLOCK

OAI-SearchBot    allow        allow        allow        BLOCK        BLOCK

将它放在CI中,与预期的网格一起提交,因此对robotstxt翻转单元会导致构建失败。

(urllibrobotparser遵循最初的robotstxt规则。它应用第一个匹配的规则,而Google应用最具体的规则,这就是为什么Disallow上面的线在前面Allow: /:然后文件双向读取相同的内容。它也不支持*和$路径中的通配符,所以保持文件简单或单独测试通配符规则。)

然后检查robotstxt看不到的图层

robotstxt是一个请求。你的CDN、WAF或bot管理设置才是真正的答案。在查询robotstxt之前,请求可能会被阻塞。检查两件事。

1服务器返回给每个用户代理的内容:

for ua in "OAI-SearchBot/14" "Claude-SearchBot" "PerplexityBot" "GPTBot/14"; do

  code=$(curl -s -o /dev/null -w "%{http_code}" -A "Mozilla/50 (compatible; $ua)" /blog/)

  echo "$ua -> $code"

done

A 403或者挑战页面意味着robotstxt之外的东西在决定。这只测试基于用户代理头的规则。一些机器人管理产品也验证机器人的IP范围,这是一个欺骗curl无法繁殖。如果你需要允许的话,OpenAI会公布爬虫的IP范围。

2机器人是否真的找到了你。你的访问日志是事实:

grep -Eo "OAI-SearchBot|ChatGPT-User|GPTBot|Claude-SearchBot|Claude-User|ClaudeBot|PerplexityBot" accesslog \

  | sort | uniq -c | sort -rn

如果你允许的搜索机器人从来没有出现,或者只得到403s,区块在robotstxt的上游。

这没有做到的是

允许搜索机器人让你合适的待引。它不会让任何人引用你。这取决于你的页面是否回答了人们提出的问题,具体细节是摘要无法替代的。那是内容问题,不是配置问题。但是首先修复配置是值得的,因为如果爬虫得到403,再多好的内容也没有用。

我们写道,如果你试图找出哪些机构或工具值得为此付费选择地理代理的指南,包括那些声称持怀疑态度的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容