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は次のユーザーエージェントを公開しています。
Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)
バージョン番号は変わる可能性があるため、ファイアウォールのルールはPerplexityBotというトークンで照合してください。IPレンジはperplexity.ai/perplexitybot.jsonで公開されています。
Perplexity-Userは何をするのか
Perplexity-Userは、ユーザーの操作を支えます。誰かがPerplexityに質問すると、正確な回答のためにウェブページを訪問し、そのページへのリンクを含めることがあります。Perplexityによると、ウェブのクロールや学習データの収集には使われません。
公開されているユーザーエージェントは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とどう違う?
3社とも、検索クローラーと、ユーザーの依頼による取得を分けています。Perplexityには2つの特徴があります。1つ目は、学習専用のクローラーを運用していないことです。PerplexityBotはAI基盤モデルのためのコンテンツのクロールには使われないとしており、学習について選択するトークンはありません。2つ目は、ユーザーによる取得のフェッチャーは通常robots.txtを無視すると明言している点です。OpenAIはChatGPT-Userにrobots.txtが適用されない場合があると述べ、AnthropicはClaude-Userを含む自社のボットがrobots.txtに従うと述べています。
実際には、robots.txtでPerplexityの検索クローラーについて判断するのが1つ、ユーザーによる取得を止めたい場合にはファイアウォールで判断するのがもう1つ、ということになります。
Perplexity向けにはどんなrobots.txtを使うべき?
引用されたいなら、検索クローラーを明示的に許可します。名前を指定したグループは*のルールを引き継がないため、非公開のパスは繰り返し書いてください。
User-agent: PerplexityBot
Allow: /
Disallow: /account/
User-agent: *
Allow: /
Disallow: /account/
PerplexityBotは学習用クローラーではないため、モデルの学習をオプトアウトするためにブロックしても、その目的は果たせず、検索での表示だけを失うことになります。
robots.txtにサイトマップを記載する場合は、Sitemap:の行をグループの外か、ファイルの末尾に置いてください。この行はすべてのクローラーに適用されます。また、サイトマップ自体がファイアウォールにブロックされていないことも確認してください。取得できないクローラーは、新規ページや更新されたページを見つけるために使えません。
ファイアウォールがPerplexityをブロックしていないことを確認するには?
ボット対策は、ブラウザ以外のリクエストをすべて不審なものとして扱うことがよくあります。Perplexityの各ユーザーエージェントでページをリクエストし、応答をブラウザのリクエストと比べます。クローラーに403、429、チャレンジページが返る場合は、トークンと、できれば公開されているIPレンジに一致する許可ルールを追加して、本物のPerplexityのトラフィックだけが通るようにします。CloudflareのAI Crawl Controlでは、AIクローラーが一覧になっており、それぞれにAllowまたはBlockのアクションがあります。
ユーザーエージェントを信用せず、検証してください。PerplexityBotと名乗るリクエストは誰でも送れるため、ユーザーエージェントだけに基づく許可ルールでは、なりすましも通してしまい、それに基づくブロックも回避できてしまいます。送信元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を使い、ユーザーエージェントのトークンとPerplexityが公開しているIPレンジで照合します。このエージェントについては、robots.txtは確実な制御手段ではありません。
robots.txtの変更が反映されるまでどれくらいかかる?
Perplexityによると、システムに変更が反映されるまで最大24時間かかることがあります。
PerplexityBotをブロックすれば、Perplexityは自分のコンテンツをまったく使わなくなる?
いいえ。Perplexityの検索インデックス向けのクロールからはページが外れますが、ユーザーがそのページについて尋ねたときにPerplexity-Userがページを取得することはあります。このフェッチャーは通常robots.txtを無視するためです。
参考資料
- Perplexity:Perplexityのクローラー
- RFC 9309:Robots Exclusion Protocol
- Cloudflare:AIクローラーの管理(AI Crawl Control)