Signo más delante de las URL en los agentes de usuario

10

Ejecuté un pequeño rastreador web y tuve que decidir qué agente de usuario usar para él. Las listas de agentes de rastreadores y Wikipedia sugieren el siguiente formato:

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

Sin embargo, algunos bots omiten el signo más delante de la URL. Y me pregunto qué significa en primer lugar, pero no pude encontrar ninguna explicación. RFC 2616 considera todo entre paréntesis un comentario y no restringe su formato. Sin embargo, es común que los navegadores tengan una lista de tokens separados por punto y coma en el comentario que anuncia la versión y las capacidades del navegador. No creo que esto esté estandarizado de ninguna manera que no sea la mayoría de los navegadores que lo formatean de manera similar. Y no pude encontrar nada relacionado con las URL en el comentario.

Mi pregunta es: ¿Por qué el signo más? ¿Lo necesito?

jlh
fuente

Respuestas:

6

El primer uso de esto que pude encontrar fue con el rastreador Heritrix . En este documento manual , encontré lo siguiente:

6.3.1.3.2. user-agent La plantilla inicial de user-agent que ve cuando inicia heritrix se verá así:

Mozilla / 5.0 (compatible; heritrix / 0.11.0 + PROJECT_URL_HERE

Debe cambiar al menos PROJECT_URL_HERE y establecer un sitio web al que los webmasters puedan acceder para ver información sobre la organización o la persona que realiza un rastreo.

La cadena de agente de usuario debe cumplir con el siguiente formato:

[texto opcional] ([texto opcional] + PROYECTO_URL [texto opcional]) [texto opcional]

El paréntesis y el signo más antes de la URL deben estar presentes. Otros ejemplos de agentes de usuario válidos incluirían:

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

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

Mozilla / 5.0 (compatible; os-heritrix / 0.11.0 + http://loc.goven nombre de la Biblioteca del Congreso)

Brendon
fuente
5

Descargué todos los agentes de usuario de http://www.user-agents.org/ y ejecuté un script para contar el número de ellos que usaron los +enlaces de estilo frente a los enlaces simples. Excluí las cadenas de agente de usuario "no estándar" que no coinciden con RFC 2616.

Aquí están los resultados:

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

Entonces, de los 673 agentes de usuario que incluyen un enlace, solo el 21% incluye el plus. De los 260 agentes de usuario que tienen un comentario que es solo un enlace, solo el 33% incluye el plus.

Según este análisis, el plus es común, pero la mayoría de los agentes de usuario optan por no usarlo. Está bien dejarlo fuera, pero es bastante común que también estaría bien incluirlo.

Aquí está el script Perl que realizó este análisis si desea ejecutarlo usted mismo.

#!/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
fuente
Muy buena respuesta! Pensé que la ventaja era más común, pero aparentemente me equivoqué. Esto responde a la pregunta de si lo necesito, pero aún no de dónde viene.
jlh
Supongo que una araña muy activa como Googlebot comenzó a hacerlo y otros desarrolladores copiaron el formato. Googlebot ciertamente lo usa, pero puede que no haya sido el primero en hacerlo.
Stephen Ostermiller
gran comentario - gracias por las estadísticas y el análisis
NetConstructor.com
pero no respondiste la pregunta.
Jürgen Paul