Kullanıcı aracılarındaki URL'lerin önünde artı işareti


10

Küçük bir web tarayıcısı çalıştırıyorum ve bunun için hangi kullanıcı aracısının kullanılacağına karar vermek zorunda kaldım. Tarayıcı ajanlarının ve Wikipedia'nın listeleri aşağıdaki biçimi önerir:

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

Ancak bazı botlar URL'nin önündeki artı işaretini atlar. İlk başta bunun ne anlama geldiğini merak ediyorum, ancak herhangi bir açıklama bulamadım. RFC 2616, parantez içindeki her şeyi bir yorum olarak görür ve biçimini kısıtlamaz. Yine de, tarayıcılarda, yorumda tarayıcının sürümünü ve yeteneklerini tanıtan noktalı virgülle ayrılmış bir jeton listesi olması yaygındır. Bunun benzer şekilde biçimlendiren çoğu tarayıcıdan başka bir şekilde standartlaştırıldığını düşünmüyorum. Yorumda URL'lerle ilgili hiçbir şey bulamadım.

Sorum şu: Neden artı işareti? İhtiyacım var mı?

Yanıtlar:


6

Bulabildiğim ilk kullanım Heritrix tarayıcısıydı . Gelen bu kılavuzu belgede , şu bulundu:

6.3.1.3.2. user-agent Heritrix'i ilk başlattığınızda gördüğünüz ilk kullanıcı-aracı şablonu aşağıdaki gibi görünecektir:

Mozilla / 5.0 (uyumlu; heritrix / 0.11.0 + PROJECT_URL_HERE

En azından PROJECT_URL_HERE öğesini değiştirmeli ve web yöneticilerinin, tarama yapan kuruluş veya kişi hakkındaki bilgileri görüntülemek için gidebilecekleri bir web sitesi oluşturmalısınız.

Kullanıcı aracısı dizesi aşağıdaki biçime uymalıdır:

[isteğe bağlı metin] ([isteğe bağlı metin] + PROJECT_URL [isteğe bağlı metin]) [isteğe bağlı metin]

URL'den önce parantez ve artı işareti bulunmalıdır. Geçerli kullanıcı aracılarının diğer örnekleri şunları içerir:

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

Mozilla / 5.0 (uyumlu; çalı paletli + http://whitehouse.gov)

Mozilla / 5.0 (uyumlu; http://loc.govKongre Kütüphanesi adına os-heritrix / 0.11.0 + )


5

Tüm kullanıcı aracılarını http://www.user-agents.org/ adresinden indirdim ve +stil bağlantılarını düz bağlantılara karşı kullananların sayısını saymak için bir komut dosyası çalıştırdım . RFC 2616 ile eşleşmeyen "standart dışı" kullanıcı aracısı dizelerini hariç tuttum.

Sonuçlar burada:

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

Dolayısıyla, bir bağlantı içeren 673 kullanıcı aracısından sadece% 21'i artı içerir. Sadece bir bağlantı olan bir yorumu olan 260 kullanıcı aracısından sadece% 33'ü artı içerir.

Bu analize dayanarak, artı yaygındır, ancak kullanıcı aracılarının çoğu bunu kullanmamayı tercih eder. Dışarıda bırakmak iyidir, ancak dahil etmenin de iyi olacağı kadar yaygındır.

Kendiniz çalıştırmak istiyorsanız, bu analizi yapan Perl betiği.

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

Çok güzel bir cevap! Artı daha yaygın olduğunu düşündüm, ama görünüşe göre yanılmışım. Bu, ihtiyacım olup olmadığı sorusunu cevaplıyor, ancak henüz nereden geldiğini değil.
jlh

Tahminimce Googlebot gibi çok aktif bir örümcek bunu yapmaya başladı ve diğer geliştiriciler formatı kopyaladı. Googlebot kesinlikle kullanıyor, ancak bunu yapan ilk kişi olmayabilir.
Stephen Ostermiller

harika yorum - istatistik ve analiz için teşekkürler
NetConstructor.com

ama soruya cevap vermedin.
Jürgen Paul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.