Плюс увійдіть перед URL-адресами в агентах користувача


10

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

 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 і створити веб-сайт, на який веб-майстри можуть перейти, щоб переглянути інформацію про організацію чи особу, яка виконує сканування.

Рядок користувача-агента повинен дотримуватися наступного формату:

[необов'язковий текст] ([необов’язковий текст] + PROJECT_URL [необов’язковий текст]) [необов'язковий текст]

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

мій-heritrix-гусеничний (+ 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

Так 677 користувальницьких агентів, які містять посилання, лише 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

Я здогадуюсь, що якийсь дуже активний павук, як Googlebot, почав це робити, а інші розробники скопіювали формат. Googlebot, безумовно, використовує його, але це, можливо, не було першим.
Стівен Остерміллер

чудовий коментар - дякую за статистику та аналіз
NetConstructor.com

але ви не відповіли на запитання.
Юрген Пол
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.