Apa cara terbaik untuk mengeluarkan bot dari jumlah tampilan?

11

Situs web saya menghitung tampilan pengunjung pada halaman tertentu. Saya perhatikan bahwa Google dan Bot lainnya "mengklik" ke situs saya seperti orang gila dan beberapa halaman mendapatkan jumlah tampilan yang tidak realistis (dibandingkan dengan yang diproduksi oleh manusia).

Saya meminta praktik terbaik untuk mengecualikan bot tersebut dari jumlah pandangan saya. Jelas "agen pengguna" sederhana yang berisi "bot" tidak akan melakukannya.

Saya tidak berpikir ada solusi untuk membuktikan peluru atau saya perlu satu.

Catatan: Saya menggunakan PHP + MySQL.

Eisberg
sumber
Jawaban yang benar untuk pertanyaan Anda tergantung pada jenis perangkat lunak yang Anda gunakan untuk melacak statistik Anda.
Goboozo
@ Goboozo Saya menggunakan PHP + MySQL. Ini bukan untuk melacak statistik saya. Ini tentang pertanyaan untuk entri "terkait", "panas" dan "menarik".
eisberg

Jawaban:

19

Saya senang Anda tahu tidak akan ada cara antipeluru untuk mencapai ini. Itu berarti pandangan Anda setidaknya realistis.

Karena JavaScript bukan opsi, saya akan mengatakan Anda memiliki:

  • Periksa agen-pengguna untuk kata "bot" di dalamnya. Itu akan menangkap sebagian besar dari mereka.

  • Kompilasi daftar bot yang dikenal dan filter mereka berdasarkan pada beberapa jenis pengidentifikasi unik, mungkin agen pengguna mereka.

  • Letakkan tautan tersembunyi di footer situs web Anda yang tertaut ke halaman yang mengumpulkan agen-pengguna dan / atau alamat IP. Pengguna tidak akan melihat ini tetapi bot akan melakukannya. Jadi siapa pun yang mengunjungi halaman itu akan menjadi bot. Rekam dan kemudian blokir dari statistik Anda.

John Conde
sumber
Ini terlihat menjanjikan. Saya suka ide jebakan. Saya melakukan sesuatu yang sama untuk komentar pengguna di situs saya dengan bidang input yang tidak terlihat (bukan Captcha yang jelek). :-)
eisberg
2
@ Eisberg, Ini disebut honeypot. Saya sendiri penggemar mereka.
John Conde
mungkin solusi terbaik ...
vkGunasekaran
7

Ada tiga cara yang cukup sederhana:

  1. Gunakan Google Analytics, yang akan memproses dan menangani semua data untuk Anda, dan memberi Anda statistik terperinci untuk pengunjung dan bagaimana mereka sampai ke situs Anda. Sejauh ini, ini adalah solusi termudah.
  2. Gunakan Javascript untuk melakukan penghitungan. Setelah halaman dimuat, buat permintaan AJAX ke skrip penghitungan Anda. Robot dan spider tidak menjalankan Javascript.
  3. Mendeteksi "bot" dalam string agen pengguna sebenarnya cukup dapat diandalkan. Atau, Anda dapat tetap menggunakan bot yang dikenal saja seperti Googlebot, Yahoo, MSNbot dll. Memeriksa ketiga bot tersebut harus mencakup 99% dari lalu lintas bot Anda. Halaman ini memiliki beberapa yang lain tetapi terlihat agak ketinggalan zaman.

PEMBARUAN: Googlebot dan beberapa bot utama melakukannya menjalankan JavaScript hari ini. Jadi menggunakan opsi # 2 saja sudah tidak layak lagi. Namun, ini berarti menggunakannya bersamaan dengan # 3 harus cukup andal, karena Anda dapat dengan mudah mengecualikan sebagian besar bot dengan menggunakan JS, kemudian di sisi server mengecualikan bot utama seperti Googlebot yang menjalankan JS.

Juga seperti yang disebutkan dalam komentar Anda dapat mencoba menggunakan API Google Analytics untuk menampilkan tampilan untuk setiap halaman.

DisgruntledGoat
sumber
1 dan 2 tidak terkait dengan pertanyaan saya. Mungkin saya seharusnya bertanya, "Bagaimana cara mendapatkan penghitung tampilan seperti stackechange yang mengabaikan bot?" jadi salah saya :-) Namun daftar yang sangat bagus di 3. Terima kasih saya akan memeriksa ini.
eisberg
Maaf, tidak menyadari Anda menampilkan jumlah tampilan pada halaman. Dalam hal 2 dan 3 keduanya layak.
DisgruntledGoat
Terima kasih atas usahanya. Setidaknya bagi saya javascript tidak pernah jawabannya jadi saya terjebak dengan 3 tetapi ada begitu banyak indikator :-(
eisberg
Sebenarnya, beberapa bot menjalankan JavaScript. Saya mengatur permintaan Ajax untuk melacak ukuran viewport sehubungan dengan ukuran layar. Googlebot melaporkan dua ukuran layar yang berbeda.
toxalot
Saya tahu pertanyaannya sudah lama dan sudah ada solusinya tetapi mengapa tidak menggunakan Google Analitycs API jika itu hanya untuk menunjukkan penghitung tampilan manusia? stackoverflow.com/questions/19484009/…
KeizerBridge
3

Jika Anda menggunakan Javascript untuk menghitung tampilan maka sebagian besar bot tidak akan menjalankannya dan karenanya tidak akan dimasukkan dalam jumlah tampilan Anda. Jawaban ini mungkin mendekati apa yang Anda inginkan /programming/1973448/how-can-i-count-a-page-views

paulmorriss
sumber
Tidak, saya tidak menggunakan Javascript. Ini adalah situs web normal PHP + MySQL. Tapi terima kasih atas jawabannya :-)
eisberg
Jangan terlalu cepat mengabaikan jawaban ini. Bahkan dengan situs yang menggunakan PHP + MySQL, tidak ada yang menghentikan Anda dari memancarkan sedikit JavaScript untuk menghasilkan penghitung tampilan Anda. Alih-alih menghasilkan penghitung secara langsung, hasilkan sesuatu seperti '<script> document.write (<counter-code>) </script>' di mana <counter-code> adalah apa pun yang Anda perlukan untuk membuat penghitung.
Itai
@ Itai Maaf, tapi saya tidak akan menggunakan javascript untuk menghitung pengunjung saya. Tapi terima kasih.
eisberg
Jika Anda tidak ingin menggunakan JavaScript, cukup cantumkan dalam pertanyaan Anda. Seperti yang dikatakan Itai, tidak ada yang mencegah kita untuk memikirkan solusi JavaScript untuk situs PHP.
Tien Do
Sebenarnya, beberapa bot menjalankan JavaScript. Saya mengatur permintaan Ajax untuk melacak ukuran viewport sehubungan dengan ukuran layar. Googlebot melaporkan dua ukuran layar yang berbeda.
toxalot
3

Pendekatan saya melibatkan dua lintasan:

  1. Saring hanya browser dan konsol web dengan mencocokkan awal string agen pengguna Mozilla|Opera|PSP|Bunjalloo|wii. Berkat agen pengguna yang melakukan spoofing, cek ini akan mendeteksi hampir semua browser
  2. Kecualikan bot dengan string pemberhentian umum bot|crawl|slurp|spider

Jadi jika langkah pertama terlewati, kami berasumsi bahwa itu adalah browser dan ada pengunjung nyata di belakangnya. Seperti yang saya ketahui meskipun beberapa bot berpura-pura Mozillakompatibel dan memulai string agen pengguna mereka dengan itu. Itu sebabnya pass kedua mungkin berguna dan menghilangkannya.

function isBrowser () {

    return preg_match( '/^(Mozilla|Opera|PSP|Bunjalloo|wii)/i', $_SERVER['HTTP_USER_AGENT'] ) && !preg_match( '/bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] );
}
Anton Gudov
sumber
2

Saya menggunakan agen parsing pengecualian hanya pengguna sederhana. Ini menghilangkan 99% bot masuk ke halaman saya.

SELECT * FROM `live_visitors` where (
lower(agent) != '%bot%' and
lower(agent) != '%slurp%' and
lower(agent) != '%spider%' and
lower(agent) != '%crawl%' and
lower(agent) != '%archiver%' and
lower(agent) != '%facebook%')
jagarock
sumber
1
Ini tidak akan membantu (setidaknya dalam kasus saya) karena hampir setiap bot saya dapat mengidentifikasi dengan perilakunya (penjelajahan yang terlalu cepat, penjelajahan kronologis semua tautan, ...) menggunakan Agen-Pengguna yang valid. Tapi ide bagus untuk proyek lain.
eisberg
2

Anda dapat menggunakan gambar sebagai penghitung, dalam hal ini tidak akan menghitung bot dan nama halaman dilewatkan sebagai kueri dengan nama gambar

Saya menggunakan ini di img.php yang memperbarui tampilan halaman dalam database:

<?php
$xnt = $_GET["ID"]; if (isset($xnt) && is_numeric($xnt)) {
$DBServer = "localhost"; $DBUser = "xxx"; $DBPass = "xxx"; $DBaze = "xxx";
$conn = mysqli_connect($DBServer, $DBUser, $DBPass, $DBaze); 
mysqli_query($conn, "UPDATE stats SET stats_vz=stats_vz+1 WHERE stats_id=".$xnt);
mysqli_close($conn);}
$im = @imagecreatetruecolor(1, 1); imagesavealpha($im, true); imagealphablending($im, false); $white = imagecolorallocatealpha($im, 255, 255, 255, 127); imagefill($im, 0, 0, $white);
header("Content-type: image/png"); imagepng($im); imagedestroy($im);
Ashraf
sumber