Знак плюс перед URL в пользовательских агентах

10

Я запустил небольшой веб-сканер и должен был решить, какой пользовательский агент использовать для него. Списки агентов поиска и Wikipedia предлагают следующий формат:

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

Однако некоторые боты опускают знак плюс перед URL. И мне интересно, что это значит, в первую очередь, но не смог найти никакого объяснения. RFC 2616 считает все в скобках комментарием и не ограничивает его формат. Тем не менее, в браузерах обычно в комментариях указывается список токенов, разделенных точкой с запятой, которые рекламируют версию и возможности браузера. Я не думаю, что это стандартизировано каким-либо образом, кроме большинства браузеров, форматирующих его аналогично. И я не смог найти ничего относительно URL в комментарии.

Мой вопрос: почему знак плюс? Мне это нужно?

JLH
источник

Ответы:

6

Первое, что я смог найти, было на гусеничном шасси Heritrix . В этом руководстве я обнаружил следующее:

6.3.1.3.2. user-agent Исходный шаблон user-agent, который вы видите при первом запуске heritrix, будет выглядеть примерно так:

Mozilla / 5.0 (совместимо; heritrix / 0.11.0 + PROJECT_URL_HERE

Вы должны изменить как минимум PROJECT_URL_HERE и создать веб-сайт, на который веб-мастера могут перейти, чтобы просмотреть информацию об организации или человеке, выполняющем сканирование.

Строка user-agent должна соответствовать следующему формату:

[необязательный текст] ([необязательный текст] + PROJECT_URL [необязательный текст]) [необязательный текст]

Круглые скобки и знак плюс перед URL должны присутствовать. Другие примеры действительных пользовательских агентов могут включать:

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

Mozilla / 5.0 (совместимый; гусеничный + http://whitehouse.gov)

Mozilla / 5.0 (совместимо; os-heritrix / 0.11.0 + http://loc.govот имени Библиотеки Конгресса)

Брендон
источник
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
";
Стивен Остермиллер
источник
Очень хороший ответ! Я думал, что плюс был более распространенным, но, видимо, я ошибся. Это отвечает на вопрос, нужно ли мне это, но пока нет, откуда оно.
июля
Я предполагаю, что некоторые очень активные пауки, такие как Googlebot, начали это делать, а другие разработчики скопировали формат. Робот Google, безусловно, использует его, но, возможно, он не был первым, кто это сделал.
Стивен Остермиллер
отличный комментарий - спасибо за статистику и анализ
NetConstructor.com
но вы не ответили на вопрос.
Юрген Паул