Plus masuk di depan URL di agen pengguna

10

Saya menjalankan crawler web kecil dan harus memutuskan agen pengguna apa yang akan digunakan untuk itu. Daftar agen perayap serta Wikipedia menyarankan format berikut:

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

Namun beberapa bot menghilangkan tanda plus di depan URL. Dan saya ingin tahu apa artinya itu, tetapi tidak dapat menemukan penjelasan. RFC 2616 menganggap segala sesuatu dalam tanda kurung komentar dan tidak membatasi formatnya. Namun itu biasa bagi browser untuk memiliki daftar token yang dipisahkan tanda titik koma di komentar yang mengiklankan versi dan kemampuan browser. Saya tidak berpikir ini dibakukan dengan cara apa pun selain sebagian besar browser memformatnya dengan cara yang sama. Dan saya tidak dapat menemukan apa pun mengenai URL di komentar.

Pertanyaan saya adalah: Mengapa tanda plus? Apakah saya membutuhkannya?

jlh
sumber

Jawaban:

6

Penggunaan pertama yang bisa saya temukan adalah dengan perayap Heritrix . Dalam dokumen manual ini , saya menemukan yang berikut:

6.3.1.3.2. agen-pengguna Templat agen-pengguna awal yang Anda lihat saat pertama kali memulai heritrix akan terlihat seperti berikut:

Mozilla / 5.0 (kompatibel; heritrix / 0.11.0 + PROJECT_URL_HERE

Anda harus mengubah setidaknya PROJECT_URL_HERE dan menempatkan situs web yang dapat dikunjungi webmaster untuk melihat informasi tentang organisasi atau orang yang menjalankan perayapan.

String agen pengguna harus mematuhi format berikut:

[teks opsional] ([teks opsional] + PROJECT_URL [teks opsional]) [teks opsional]

Tanda kurung dan tanda tambah sebelum URL harus ada. Contoh lain dari agen pengguna yang valid akan mencakup:

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

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

Mozilla / 5.0 (kompatibel; os-heritrix / 0.11.0 + http://loc.govatas nama Perpustakaan Kongres)

Brendon
sumber
5

Saya mengunduh semua agen pengguna dari http://www.user-agents.org/ dan menjalankan skrip untuk menghitung jumlah mereka yang menggunakan +tautan gaya vs tautan biasa. Saya mengecualikan string agen pengguna "non-standar" yang tidak cocok dengan RFC 2616.

Inilah hasilnya:

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

Jadi dari 673 agen pengguna yang menyertakan tautan, hanya 21% yang menyertakan plus. Dari 260 agen pengguna yang memiliki komentar yang hanya berupa tautan, hanya 33% yang menyertakan plus.

Berdasarkan analisis ini, plus adalah umum, tetapi mayoritas agen pengguna memilih untuk tidak menggunakannya. Tidak apa-apa untuk meninggalkannya, tetapi cukup umum bahwa itu juga baik-baik saja untuk memasukkannya.

Berikut adalah skrip Perl yang melakukan analisis ini jika Anda ingin menjalankannya sendiri.

#!/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
sumber
Jawaban yang sangat bagus! Saya pikir plus itu lebih umum, tetapi ternyata saya salah. Ini menjawab pertanyaan apakah saya membutuhkannya, tetapi belum dari mana asalnya.
jlh
Dugaan saya adalah beberapa laba-laba yang sangat aktif seperti Googlebot mulai melakukannya dan pengembang lain menyalin formatnya. Googlebot tentu saja menggunakannya, tetapi mungkin bukan yang pertama melakukannya.
Stephen Ostermiller
komentar yang bagus - terima kasih untuk statistik dan analisisnya
NetConstructor.com
tetapi, Anda tidak menjawab pertanyaan itu.
Jürgen Paul