ユーザーエージェントのURLの前にプラス記号を付ける


10

私は小さなWebクローラーを実行し、それに使用するユーザーエージェントを決定する必要がありました。 クローラエージェントのリストだけでなく、ウィキペディアには、次のフォーマットをお勧め:

 examplebot/1.2 (+http://www.example.com/bot.html)

ただし、一部のボットはURLの前のプラス記号を省略します。そもそもそれが何を意味するのか気になりますが、説明が見つかりませんでした。 RFC 2616は、括弧内のすべてをコメント見なし、その形式を制限しません。しかし、ブラウザのバージョンと機能を宣伝するコメントには、ブラウザがセミコロンで区切られたトークンのリストを含めるのが一般的です。これは、ほとんどのブラウザが同じようにフォーマットする以外の方法で標準化されているとは思いません。また、コメントにURLに関する情報は見つかりませんでした。

私の質問は、なぜプラス記号なのか?必要ですか?

回答:


6

私が見つけた最初の使用法は、Heritrixクローラーでした。では、このマニュアル文書、私は以下のが見つかりました:

6.3.1.3.2。user-agent heritrixを初めて起動したときに表示される最初のユーザーエージェントテンプレートは、次のようになります。

Mozilla / 5.0(互換性あり; heritrix / 0.11.0 + PROJECT_URL_HERE

少なくともPROJECT_URL_HEREを変更し、組織またはクロールを実行している人に関する情報を表示するためにWebマスターがアクセスできるWebサイトを配置する必要があります。

ユーザーエージェント文字列は、次の形式に従う必要があります。

[オプションのテキスト]([オプションのテキスト] + PROJECT_URL [オプションのテキスト])[オプションのテキスト]

括弧とプラス記号は、URLの前に存在する必要があります。有効なユーザーエージェントの他の例には次のものがあります。

my-heritrix-crawler(+ http://mywebsite.com

Mozilla / 5.0(互換性あり;ブッシュクローラー+ http://whitehouse.gov

Mozilla / 5.0(互換; http://loc.gov議会図書館に代わってos-heritrix / 0.11.0 + )


5

すべてのユーザーエージェントをhttp://www.user-agents.org/からダウンロードし、スクリプトを実行して、+スタイルリンクとプレーンリンクを使用したユーザーエージェントの数をカウントしました。RFC 2616に一致しない「非標準」のユーザーエージェント文字列を除外しました。

結果は次のとおりです。

Total: 2471
Standard: 2064
Non-standard: 407
No link: 1391
With link: 673
Plus link: 145
Plain link: 528
Plus link only: 86
Plain link only: 174

したがって、リンクを含む673のユーザーエージェントのうち、21%だけがプラスを含みます。単なるリンクであるコメントを持つ260のユーザーエージェントのうち、33%だけがプラスを含みます。

この分析に基づいて、プラスは一般的ですが、ユーザーエージェントの大部分はそれを使用しないことを選択します。省略してもかまいませんが、含めることも問題ないほど一般的です。

これを自分で実行する場合に、この分析を実行したPerlスクリプトを次に示します。

#!/usr/bin/perl

use strict;

my $doc="";

while(my $line = <>){
    $doc.=$line;
}

my @agents = $doc =~ /\<td class\=\"left\"\>[ \t\r\n]+(.*?)\&nbsp\;/gs;

my $total = 0;
my $standard = 0;
my $nonStandard = 0;
my $noHttp = 0;
my $http = 0;
my $plusHttp = 0;
my $noPlusHttp = 0;
my $linkOnly = 0;
my $plusLinkOnly = 0;

for my $agent (@agents){
    $total++;
    if ($agent =~ /^(?:[a-zA-Z0-9\.\-\_]+(?:\/[a-zA-Z0-9\.\-\_]+)?(?: \([^\)]+\))?[ ]*)+$/){
        print "Standard: $agent\n";
        $standard++;
        if ($agent =~ /http/i){
            print "With link: $agent\n";
            $http++;
            if ($agent =~ /\+http/i){
                print "Plus link: $agent\n";
                $plusHttp++;
            } else {
                print "Plain link: $agent\n";
                $noPlusHttp++;
            }
            if ($agent =~ /\(http[^ ]+\)/i){
                print "Plain link only: $agent\n";
                $linkOnly++;
            } elsif ($agent =~ /\(\+http[^ ]+\)/i){
                print "Plus link only: $agent\n";
                $plusLinkOnly++;
            }
        } else {
            print "No link: $agent\n";
            $noHttp++;
        }
    } else {
        print "Non-standard: $agent\n";
        $nonStandard++;
    }
}

print "
Total: $total
Standard: $standard
Non-standard: $nonStandard
No link: $noHttp
With link: $http
Plus link: $plusHttp
Plain link: $noPlusHttp
Plus link only: $plusLinkOnly
Plain link only: $linkOnly
";

とてもいい答えです!プラスの方が一般的だと思いましたが、どうやら間違いでした。これは、それが必要かどうかという質問には答えますが、それがどこから来るのかはまだわかりません。
jlh 2013

私の推測では、Googlebotのような非常にアクティブなスパイダーがそれを実行し始め、他の開発者がフォーマットをコピーしました。Googlebotは確かにそれを使用しますが、最初に使用したわけではありません。
スティーブンオスターミラー

素晴らしいコメント-統計と分析に感謝
NetConstructor.com 2013

しかし、あなたは質問に答えませんでした。
ユルゲンポール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.