Perplexity 的爬虫:PerplexityBot 和 Perplexity-User
Perplexity 用 PerplexityBot 在搜索结果中展示并链接网站,用 Perplexity-User 在用户的问题需要时访问页面。Perplexity 表示,PerplexityBot 遵循 robots.txt,且不用于训练基础模型,而 Perplexity-User 因为是用户要求的抓取,通常会忽略 robots.txt。
Perplexity 以引用为核心:回答附带指向所依据页面的编号链接。它的爬虫文档很简短,但清楚说明了哪个代理遵循 robots.txt,哪个不遵循。这个差别决定了,如果想控制其中任何一个,你该用什么工具。
本页内容
PerplexityBot 是做什么的?
PerplexityBot 的设计目的是在 Perplexity 的搜索结果中展示并链接网站。Perplexity 表示它不用于为 AI 基础模型抓取内容。要出现在 Perplexity 的搜索结果中,Perplexity 建议在 robots.txt 中允许 PerplexityBot。
Perplexity 记录的 user agent 如下:
Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)
版本号可能变化,所以防火墙规则应匹配标识 PerplexityBot。Perplexity 在 perplexity.ai/perplexitybot.json 发布其 IP 范围。
Perplexity-User 是做什么的?
Perplexity-User 支持用户的操作。当有人向 Perplexity 提问时,它可能会访问网页,以帮助给出准确的回答,并附上该页面的链接。Perplexity 表示它不用于抓取网络或收集训练数据。
它记录的 user agent 是 Mozilla/5.0 (compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user),其 IP 范围发布在 perplexity.ai/perplexity-user.json。
robots.txt 能控制什么,不能控制什么?
这是关键点。Perplexity 表示,由于抓取是用户要求的,Perplexity-User 通常会忽略 robots.txt 规则。针对 PerplexityBot 的 robots.txt 规则组会影响搜索索引;但它并不能可靠地阻止代表用户进行的实时抓取。
- 在 robots.txt 中禁止
PerplexityBot:你的页面不会被抓取到 Perplexity 的搜索索引中,因此被展示和链接的可能性更小。 - 在 robots.txt 中禁止
Perplexity-User:根据 Perplexity 的文档,这个抓取程序通常会忽略它,所以这不是可靠的控制手段。 - 在防火墙处屏蔽
Perplexity-User:抓取失败,询问你页面的用户得到的回答中不包含它。 - 两者都允许:Perplexity 可以索引你的页面,也可以在用户提问时实时读取。
Perplexity 表示,robots.txt 的每项设置独立起作用,更改最多可能需要 24 小时才会体现出来。
Perplexity 与 ChatGPT 和 Claude 有何不同?
三家厂商都把搜索爬虫与用户请求的抓取程序分开。Perplexity 有两点不同。第一,它不运行单独的训练爬虫:它表示 PerplexityBot 不用于为 AI 基础模型抓取内容,所以没有可供选择的训练标识。第二,它明确表示其用户抓取程序通常会忽略 robots.txt,而 OpenAI 表示 robots.txt 可能不适用于 ChatGPT-User,Anthropic 则表示包括 Claude-User 在内的其机器人遵循 robots.txt。
实际上这意味着:在 robots.txt 中只需为 Perplexity 的搜索爬虫做一个决定;如果你想阻止用户请求的抓取,则要在防火墙上做决定。
我应该为 Perplexity 使用怎样的 robots.txt?
如果希望被引用,请明确允许搜索爬虫。请记住,指名的规则组不会继承 * 中的规则,所以要重复写出任何私密路径:
User-agent: PerplexityBot
Allow: /
Disallow: /account/
User-agent: *
Allow: /
Disallow: /account/
由于 PerplexityBot 不是训练爬虫,为了退出模型训练而屏蔽它,只会让你损失搜索可见度,却达不到那个目的。
如果你在 robots.txt 中列出站点地图,请把 Sitemap: 行放在任何规则组之外或文件末尾;它适用于所有爬虫。还要确保站点地图本身没有被你的防火墙屏蔽,因为无法获取它的爬虫也就无法用它来发现新增或更改的页面。
如何确保防火墙不会屏蔽 Perplexity?
机器人防护往往把任何非浏览器的请求都视为可疑。用 Perplexity 的每个 user agent 请求你的页面,并把响应与浏览器请求的结果比较。如果爬虫得到 403、429 或验证页面,请添加一条允许规则,匹配其标识,最好再匹配已公布的 IP 范围,这样只有真正的 Perplexity 流量才能通过。在 Cloudflare 中,AI Crawl Control 会列出 AI 爬虫,并为每个爬虫提供 Allow 或 Block 操作。
要验证,而不是信任 user agent。任何人都可以发出自称 PerplexityBot 的请求,所以仅基于 user agent 的允许规则也会放行冒充者,基于它的屏蔽也可以被绕过。把来源 IP 与 Perplexity 公布的列表进行核对,才能让这两类规则都可靠。
AISeeWhy 会将 PerplexityBot 和 Perplexity-User 与另外 12 个爬虫一起测试。因为两者都决定 Perplexity 能否在回答中使用你的页面,所以任何一个被屏蔽都会报告为 P1,并给出修复规则。
常见问题
Perplexity 会用我的内容训练 AI 模型吗?
Perplexity 表示,PerplexityBot 和 Perplexity-User 都不用于收集内容来训练 AI 基础模型。
Perplexity-User 为什么会忽略 robots.txt?
Perplexity 的理由是,用户要求了这个页面,所以这次抓取是代表该用户的行为,而不是自动化抓取。其文档称,出于这个原因,这个抓取程序通常会忽略 robots.txt。
如果需要,我该如何屏蔽 Perplexity-User?
使用你的防火墙或 CDN,匹配其 user agent 标识和 Perplexity 已公布的 IP 范围。对于这个代理,robots.txt 不是可靠的控制手段。
robots.txt 的更改需要多久才会生效?
Perplexity 表示,其系统最多可能需要 24 小时才会反映更改。
屏蔽 PerplexityBot 会让 Perplexity 完全不使用我的内容吗?
不会。它只是让你的页面不被抓取进 Perplexity 的搜索索引,但当用户询问某个页面时,Perplexity-User 仍然可以获取该页面,因为这个抓取程序通常会忽略 robots.txt。