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.