Pluszeichen vor URLs in Benutzeragenten

10

Ich habe einen kleinen Webcrawler ausgeführt und musste mich entscheiden, welchen Benutzeragenten ich dafür verwenden soll. Listen von Crawler-Agenten sowie Wikipedia schlagen das folgende Format vor:

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

Einige Bots lassen jedoch das Pluszeichen vor der URL weg. Und ich frage mich, was es überhaupt bedeutet, konnte aber keine Erklärung finden. RFC 2616 betrachtet alles in Klammern als Kommentar und schränkt sein Format nicht ein. Es ist jedoch üblich, dass Browser eine durch Semikolons getrennte Liste von Token im Kommentar haben, die für die Version und die Funktionen des Browsers werben. Ich denke nicht, dass dies anders standardisiert ist als die meisten Browser, die es ähnlich formatieren. Und ich konnte im Kommentar nichts zu URLs finden.

Meine Frage ist: Warum das Pluszeichen? Brauche ich es

jlh
quelle

Antworten:

6

Die erste Verwendung, die ich finden konnte, war mit dem Heritrix-Crawler . In diesem Handbuch habe ich Folgendes gefunden:

6.3.1.3.2. Benutzeragent Die erste Benutzeragentenvorlage, die Sie beim ersten Start von heritrix sehen, sieht ungefähr so ​​aus:

Mozilla / 5.0 (kompatibel; heritrix / 0.11.0 + PROJECT_URL_HERE

Sie müssen mindestens PROJECT_URL_HERE ändern und eine Website einrichten, auf der Webmaster Informationen zur Organisation oder Person anzeigen können, die einen Crawl ausführt.

Die Benutzeragentenzeichenfolge muss dem folgenden Format entsprechen:

[optionaler Text] ([optionaler Text] + PROJECT_URL [optionaler Text]) [optionaler Text]

Die Klammer und das Pluszeichen vor der URL müssen vorhanden sein. Andere Beispiele für gültige Benutzeragenten wären:

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

Mozilla / 5.0 (kompatibel; Bush-Crawler + http://whitehouse.gov)

Mozilla / 5.0 (kompatibel; os-heritrix / 0.11.0 + http://loc.govim Auftrag der Library of Congress)

Brendon
quelle
5

Ich habe alle Benutzeragenten von http://www.user-agents.org/ heruntergeladen und ein Skript ausgeführt, um die Anzahl der Benutzer zu zählen, die die +Style-Links im Vergleich zu einfachen Links verwendet haben. Ich habe die "nicht standardmäßigen" Benutzeragentenzeichenfolgen ausgeschlossen, die nicht mit RFC 2616 übereinstimmen.

Hier sind die Ergebnisse:

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

Von den 673 Benutzeragenten, die einen Link enthalten, enthalten nur 21% das Plus. Von den 260 Benutzeragenten, die einen Kommentar haben, der nur ein Link ist, enthalten nur 33% das Plus.

Basierend auf dieser Analyse ist das Plus häufig, aber die Mehrheit der Benutzeragenten entscheidet sich dafür, es nicht zu verwenden. Es ist in Ordnung, es wegzulassen, aber es ist häufig genug, dass es auch in Ordnung wäre, es einzuschließen.

Hier ist das Perl-Skript, das diese Analyse durchgeführt hat, wenn Sie sie selbst ausführen möchten.

#!/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
";
Stephen Ostermiller
quelle
Sehr schöne Antwort! Ich dachte, dass das Plus häufiger vorkommt, aber anscheinend habe ich mich geirrt. Dies beantwortet die Frage, ob ich es brauche, aber noch nicht, woher es kommt.
jlh
Ich vermute, dass einige sehr aktive Spinnen wie Googlebot damit begonnen haben und andere Entwickler das Format kopiert haben. Googlebot verwendet es sicherlich, aber es war möglicherweise nicht das erste Mal, dass es dies tat.
Stephen Ostermiller
toller Kommentar - danke für die Statistiken und die Analyse
NetConstructor.com
Aber du hast die Frage nicht beantwortet.
Jürgen Paul