5

クローラーが robots.txt ファイルの User-Agent 行を読み取るとき、それを独自の User-Agent と正確に一致させようとしますか、それとも User-Agent の部分文字列として一致させようとしますか?

私が読んだすべてが、この質問に明確に答えているわけではありません。別の StackOverflow スレッドによると、完全に一致しています。

ただし、RFC ドラフトでは、部分文字列の一致であると信じています。たとえば、User-Agent: Google「Googlebot」と「Googlebot-News」に一致します。RFC からの関連する引用を次に示します。

/robots.txtロボットは、部分文字列としてロボットの名前トークンを値に含む User-Agent 行を含む最初のレコードに従う必要があります。

さらに、 Googlebot のドキュメントの「ユーザー エージェントの優先順位」セクションでは、Google 画像のユーザー エージェント " Googlebot-Image/1.0" がUser-Agent: googlebot.

ここで明確にしていただければ幸いです。答えは私の質問よりも複雑になる可能性があります。たとえば、ノードの Eugene Kalinin の robots モジュールでは、29 行目で User-Agent を分割して「名前トークン」を取得し、それに対して照合することが言及されています。これが true の場合、Googlebot の User-Agent " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" は一致しませんUser-Agent: Googlebot

4

2 に答える 2

5

オリジナルのrobots.txt 仕様 (1994 年以降)では、次のように述べられています。

ユーザーエージェント

[…]

ロボットは、このフィールドを自由に解釈する必要があります。大文字と小文字を区別せず、バージョン情報を含まない名前の部分文字列を一致させることをお勧めします。

[…]

ボット/パーサーがこれに準拠しているかどうか、およびどのボット/パーサーがこれに準拠しているかは別の問題であり、一般的には答えられません。

于 2013-08-05T11:14:47.647 に答える
3

すべてのロボットはこれを少しずつ異なります。robots.txt 内のユーザー エージェントを、リクエスト ヘッダーで送信されたユーザー エージェントにマッピングするための信頼できる唯一の方法はありません。最も安全なのは、それらを 2 つの別個の任意の文字列として扱うことです。robots.txt ユーザーエージェントを見つける唯一の 100% 信頼できる方法は、特定のロボットの公式ドキュメントを読むことです。

編集:

一般的には、特定のロボットの公式ドキュメントを読むのが最善の策ですが、これでも 100% 正確ではありません。Michael Marr が指摘しているように、Google には robots.txt テスト ツールがあり、これを使用して特定のロボットでどの UA が動作するかを検証できます。このツールは、ドキュメントが不正確であることを明らかにします。具体的には、ページhttps://developers.google.com/webmasters/control-crawl-index/docs/は、メディア パートナー ボットが「Googlebot」UA に応答すると主張していますが、ツールはそうではないことを示しています。

于 2013-08-02T23:31:33.037 に答える