Inoltre, accedi agli URL negli interpreti


10

Ho eseguito un piccolo crawler Web e ho dovuto decidere quale agente utente utilizzare per esso. Gli elenchi degli agenti cingolati e Wikipedia suggeriscono il seguente formato:

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

Tuttavia, alcuni robot omettono il segno più davanti all'URL. E mi chiedo cosa significhi in primo luogo, ma non sono riuscito a trovare alcuna spiegazione. RFC 2616 considera tutto in parentesi un commento e non ne limita il formato. Tuttavia è comune per i browser avere un elenco di token separati da punto e virgola nel commento che pubblicizzano la versione e le funzionalità del browser. Non penso che questo sia standardizzato in alcun modo diverso dalla maggior parte dei browser che lo formattano in modo simile. E non ho trovato nulla riguardo agli URL nel commento.

La mia domanda è: perché il segno più? Ne ho bisogno?

Risposte:


6

Il primo utilizzo di questo che ho trovato è stato con il crawler Heritrix . In questo documento del manuale , ho trovato quanto segue:

6.3.1.3.2. user-agent Il modello iniziale di user-agent che vedi quando avvii heritrix sarà simile al seguente:

Mozilla / 5.0 (compatibile; heritrix / 0.11.0 + PROJECT_URL_HERE

Devi modificare almeno PROJECT_URL_HERE e creare un sito Web a cui i webmaster possano accedere per visualizzare informazioni sull'organizzazione o sulla persona che esegue una scansione.

La stringa agente utente deve aderire al seguente formato:

[opzionale-testo] ([opzionale-testo] + PROJECT_URL [opzionale-testo]) [opzionale-testo]

La parentesi e il segno più prima dell'URL devono essere presenti. Altri esempi di agenti utente validi includono:

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

Mozilla / 5.0 (compatibile; bush-crawler + http://whitehouse.gov)

Mozilla / 5.0 (compatibile; os-heritrix / 0.11.0 + http://loc.govper conto della Library of Congress)


5

Ho scaricato tutti gli user agent da http://www.user-agents.org/ e ho eseguito uno script per contare il numero di quelli che utilizzavano i +link di stile e quelli semplici. Ho escluso le stringhe "non standard" di user agent che non corrispondono a RFC 2616.

Ecco i risultati:

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

Pertanto, tra i 673 agenti utente che includono un collegamento, solo il 21% include il plus. Dei 260 user agent che hanno un commento che è solo un link, solo il 33% include il plus.

Sulla base di questa analisi, il plus è comune, ma la maggior parte dei programmi utente sceglie di non utilizzarlo. Va bene lasciarlo fuori, ma è abbastanza comune che sarebbe anche bene includerlo.

Ecco lo script Perl che ha eseguito questa analisi se si desidera eseguirlo da soli.

#!/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
";

Risposta molto bella! Pensavo che il plus fosse più comune, ma apparentemente mi sbagliavo. Questo risponde alla domanda se ne ho bisogno, ma non ancora da dove provenga.
jlh

La mia ipotesi è che un ragno molto attivo come Googlebot abbia iniziato a farlo e altri sviluppatori abbiano copiato il formato. Googlebot lo usa sicuramente, ma potrebbe non essere stato il primo a farlo.
Stephen Ostermiller

ottimo commento - grazie per le statistiche e l'analisi
NetConstructor.com il

ma non hai risposto alla domanda.
Jürgen Paul,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.