Signe plus devant les URL dans les agents utilisateurs

10

J'ai exécuté un petit robot d'indexation Web et j'ai dû décider quel agent utilisateur utiliser pour cela. Les listes d'agents sur chenilles ainsi que Wikipedia suggèrent le format suivant:

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

Cependant, certains robots omettent le signe plus devant l'URL. Et je me demande ce que cela signifie en premier lieu, mais je n'ai trouvé aucune explication. La RFC 2616 considère tout entre parenthèses comme un commentaire et ne restreint pas son format. Pourtant, il est courant pour les navigateurs d'avoir dans le commentaire une liste de jetons séparés par des points-virgules qui annoncent la version et les capacités du navigateur. Je ne pense pas que cela soit standardisé autrement que par la plupart des navigateurs le formatant de manière similaire. Et je n'ai rien trouvé concernant les URL dans le commentaire.

Ma question est: pourquoi le signe plus? En ai-je besoin?

jlh
la source

Réponses:

6

La première utilisation que j'ai pu trouver a été avec le robot Heritrix . Dans ce manuel , j'ai trouvé ce qui suit:

6.3.1.3.2. user-agent Le modèle initial d'agent utilisateur que vous voyez lorsque vous démarrez heritrix pour la première fois ressemblera à ceci:

Mozilla / 5.0 (compatible; heritrix / 0.11.0 + PROJECT_URL_HERE

Vous devez modifier au moins le PROJECT_URL_HERE et mettre en place un site Web auquel les webmasters peuvent accéder pour afficher des informations sur l'organisation ou la personne exécutant une analyse.

La chaîne d'agent utilisateur doit respecter le format suivant:

[texte facultatif] ([texte facultatif] + PROJECT_URL [texte facultatif]) [texte facultatif]

La parenthèse et le signe plus avant l'URL doivent être présents. Voici d'autres exemples d'agents utilisateurs valides:

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.govau nom de la Bibliothèque du Congrès)

Brendon
la source
5

J'ai téléchargé tous les agents utilisateurs depuis http://www.user-agents.org/ et j'ai exécuté un script pour compter le nombre d'entre eux qui utilisaient les +liens de style par rapport aux liens simples. J'ai exclu les chaînes d'agent utilisateur "non standard" qui ne correspondent pas à RFC 2616.

Voici les résultats:

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

Ainsi, sur les 673 agents utilisateurs qui incluent un lien, seulement 21% incluent le plus. Sur les 260 agents utilisateurs qui ont un commentaire qui est juste un lien, seulement 33% comprennent le plus.

Sur la base de cette analyse, le plus est courant, mais la majorité des agents utilisateurs choisissent de ne pas l'utiliser. Il est bon de le laisser de côté, mais il est assez courant qu'il serait également bien de l'inclure.

Voici le script Perl qui a effectué cette analyse si vous souhaitez l'exécuter vous-même.

#!/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
la source
Très belle réponse! Je pensais que le plus était plus courant, mais apparemment je me trompais. Cela répond à la question de savoir si j'en ai besoin, mais pas encore d'où cela vient.
jlh
Je suppose que certaines araignées très actives comme Googlebot ont commencé à le faire et d'autres développeurs ont copié le format. Googlebot l'utilise certainement, mais il n'est peut-être pas le premier à le faire.
Stephen Ostermiller
grand commentaire - merci pour les statistiques et l'analyse
NetConstructor.com
mais vous n'avez pas répondu à la question.
Jürgen Paul