Sinal de adição na frente dos URLs nos agentes do usuário

10

Eu corro um pequeno rastreador da web e tive que decidir sobre qual agente de usuário usar para ele. As listas de agentes de rastreadores e a Wikipedia sugerem o seguinte formato:

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

No entanto, alguns bots omitem o sinal de adição na frente do URL. E me pergunto o que isso significa em primeiro lugar, mas não consegui encontrar nenhuma explicação. A RFC 2616 considera tudo entre parênteses como um comentário e não restringe seu formato. No entanto, é comum os navegadores terem uma lista de tokens separados por ponto e vírgula no comentário que anuncia a versão e os recursos do navegador. Eu não acho que isso seja padronizado de nenhuma outra maneira que não seja a maioria dos navegadores que o formata da mesma forma. E não encontrei nada sobre URLs no comentário.

Minha pergunta é: Por que o sinal de mais? Eu preciso disso?

jlh
fonte

Respostas:

6

O primeiro uso disso que encontrei foi com o rastreador Heritrix . No presente manual de documentos , eu encontrei o seguinte:

6.3.1.3.2 user-agent O modelo inicial de user agent que você vê ao iniciar o heritrix terá a seguinte aparência:

Mozilla / 5.0 (compatível; heritrix / 0.11.0 + PROJECT_URL_HERE

Você deve alterar pelo menos o PROJECT_URL_HERE e criar um site no qual os webmasters possam acessar para exibir informações sobre a organização ou a pessoa que está executando um rastreamento.

A sequência do agente do usuário deve aderir ao seguinte formato:

[texto opcional] ([texto opcional] + PROJECT_URL [texto opcional]) [texto opcional]

Os parênteses e o sinal de adição antes da URL devem estar presentes. Outros exemplos de agentes de usuário válidos incluem:

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

Mozilla / 5.0 (compatível; bush-crawler + http://whitehouse.gov)

Mozilla / 5.0 (compatível; os-heritrix / 0.11.0 + http://loc.govem nome da Biblioteca do Congresso)

Brendon
fonte
5

Fiz o download de todos os agentes de usuário em http://www.user-agents.org/ e executei um script para contar o número deles que usavam os +links de estilo versus links simples. Excluí as cadeias de agente do usuário "não padrão" que não correspondem à RFC 2616.

Aqui estão os 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

Assim, dos 673 agentes de usuário que incluem um link, apenas 21% incluem o plus. Dos 260 agentes de usuário que têm um comentário que é apenas um link, apenas 33% incluem o sinal de mais.

Com base nessa análise, o sinal de adição é comum, mas a maioria dos agentes de usuário opta por não usá-lo. É bom deixá-lo de fora, mas é bastante comum que também seria bom incluí-lo.

Aqui está o script Perl que executou essa análise se você quiser executá-la.

#!/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
fonte
Resposta muito boa! Eu pensei que o plus era mais comum, mas aparentemente eu estava enganado. Isso responde à pergunta se eu preciso, mas ainda não de onde vem.
jlh
Meu palpite é que uma aranha muito ativa como o Googlebot começou a fazê-lo e outros desenvolvedores copiaram o formato. O Googlebot certamente o usa, mas pode não ter sido o primeiro a fazê-lo.
Stephen Ostermiller
ótimo comentário - obrigado pelas estatísticas e pela análise
NetConstructor.com
mas você não respondeu à pergunta.
precisa