बॉट को व्यू काउंट से बाहर करने का सबसे अच्छा तरीका क्या है?


12

मेरी वेबसाइट कुछ पृष्ठों पर आगंतुक विचारों की गणना कर रही है। मैंने देखा कि Google और अन्य बोट्स मेरी साइट पर पागलों की तरह "क्लिक" कर रहे हैं और कुछ पृष्ठों पर अवास्तविक दृश्य गणना (मनुष्यों द्वारा उत्पादित लोगों की तुलना में) मिलते हैं।

मैं अपने बॉट काउंट से उन बॉट्स को बाहर करने के लिए सबसे अच्छा अभ्यास करने के लिए कह रहा हूं। स्पष्ट रूप से एक सरल "उपयोगकर्ता एजेंट" में "बॉट" होता है वह ऐसा नहीं करेगा।

मुझे नहीं लगता कि कोई बुलेट साबित समाधान है और न ही मुझे इसकी आवश्यकता है।

नोट: मैं PHP + MySQL का उपयोग कर रहा हूँ।


आपके प्रश्न का सही उत्तर इस बात पर निर्भर करता है कि आप अपने आँकड़ों को ट्रैक करने के लिए किस तरह के सॉफ़्टवेयर का उपयोग करते हैं।
गोबोझो

@Goboozo मैं PHP + MySQL का उपयोग कर रहा हूँ। यह मेरे आँकड़े ट्रैक करने के लिए नहीं है। यह "संबंधित", "हॉट" और "दिलचस्प" प्रविष्टियों के लिए प्रश्नों के बारे में है।
आइज़बर्ग

जवाबों:


19

मुझे खुशी है कि आप जानते हैं कि इसे पूरा करने के लिए बुलेटप्रूफ तरीका नहीं है। इसका मतलब है कि आपका दृष्टिकोण कम से कम यथार्थवादी है।

चूंकि जावास्क्रिप्ट एक विकल्प नहीं है, मैं कहूंगा कि आप इसके साथ बचे हैं:

  • इसमें "बॉट" शब्द के लिए उपयोगकर्ता-एजेंट की जांच करें। यह उनमें से अधिकांश को पकड़ लेगा।

  • ज्ञात बॉट्स की एक सूची संकलित करें और उन्हें किसी प्रकार के विशिष्ट पहचानकर्ता के आधार पर फ़िल्टर करें, शायद उनके उपयोगकर्ता-एजेंट।

  • अपनी वेबसाइट के पाद लेख में एक छिपा हुआ लिंक डालें जो उपयोगकर्ता-एजेंटों और / या आईपी पतों को इकट्ठा करने वाले पृष्ठ से जोड़ता है। उपयोगकर्ता यह नहीं देखेंगे, लेकिन बॉट करेंगे। तो जो भी उस पृष्ठ पर जाएगा वह एक बॉट होगा। उन्हें रिकॉर्ड करें और फिर उन्हें अपने आँकड़ों से ब्लॉक करें।


यह आशाजनक लग रहा है। मुझे एक जाल का विचार पसंद है। मैं एक अदृश्य इनपुट फ़ील्ड (एक बदसूरत कैप्चा के बजाय) के साथ अपनी साइट पर उपयोगकर्ता टिप्पणियों के लिए कुछ समान करता हूं। :-)
आइज़बर्ग

2
@ आइसबर्ग, इसे हनीपोट कहा जाता है। मैं खुद उनका बहुत बड़ा प्रशंसक हूं।
जॉन कोंडे

शायद सबसे अच्छा समाधान ...
vkGunasekaran

7

वहाँ तीन काफी सरल तरीके हैं:

  1. Google Analytics का उपयोग करें, जो आपके लिए सभी डेटा को संसाधित और संभाल लेगा, और आपको आगंतुकों के लिए विस्तृत आँकड़े और वे आपकी साइट पर कैसे आए, प्रस्तुत करेंगे। यह अब तक का सबसे आसान उपाय है।
  2. गिनती करने के लिए जावास्क्रिप्ट का उपयोग करें। जब पृष्ठ लोड हो जाता है, तो अपनी गिनती स्क्रिप्ट के लिए एक AJAX अनुरोध बनाएं। रोबोट और मकड़ियों जावास्क्रिप्ट नहीं चलाते हैं।
  3. उपयोगकर्ता एजेंट स्ट्रिंग में "बॉट" का पता लगाना वास्तव में काफी विश्वसनीय है। वैकल्पिक रूप से, आप केवल ज्ञात बॉट्स जैसे कि Googlebot, Yahoo, MSNbot आदि से चिपके रह सकते हैं। उन तीनों की जाँच करने पर आपके बॉट ट्रैफ़िक का 99% कवर होना चाहिए। इस पृष्ठ में कुछ अन्य हैं लेकिन यह काफी पुराना है।

अद्यतन: Googlebot को और कुछ प्रमुख बॉट करते जावास्क्रिप्ट इन दिनों चलाते हैं। तो विकल्प # 2 का उपयोग करना अब व्यवहार्य नहीं है। हालांकि, इसका मतलब यह है कि # 3 के साथ संयोजन के रूप में इसका उपयोग काफी विश्वसनीय होना चाहिए, क्योंकि आप जेएस का उपयोग करके आसानी से अधिकांश बॉट को बाहर कर सकते हैं, फिर सर्वर साइड पर Googlebot जैसे प्रमुख बॉट को छोड़ दें जो जेएस चलाते हैं।

टिप्पणियों के अनुसार, आप प्रत्येक पृष्ठ के लिए विचार प्रदर्शित करने के लिए Google Analytics API का उपयोग करने का प्रयास कर सकते हैं।


1 और 2 मेरे प्रश्न से असंबंधित हैं। शायद मुझे पूछा जाना चाहिए "मुझे स्टैकचेंज जैसे व्यू काउंटर कैसे मिलते हैं जो बॉट्स को नजरअंदाज करते हैं?" इसलिए मेरी झूठी :-) फिर भी 3. में बहुत अच्छी सूची है। धन्यवाद, मैं इसकी जांच करूंगा।
इस्बर्ग

क्षमा करें, आपको यह महसूस नहीं हुआ कि आप पृष्ठ पर दृश्य गणना प्रदर्शित कर रहे हैं। उस स्थिति में 2 और 3 दोनों व्यवहार्य हैं।
असंतुष्टगीतगत

प्रयास के लिए धन्यवाद। कम से कम मेरे लिए जावास्क्रिप्ट का जवाब कभी नहीं है इसलिए मैं 3 के साथ फंस गया हूं, लेकिन बहुत सारे संकेतक हैं :-(
eisberg

दरअसल, कुछ बॉट कुछ जावास्क्रिप्ट चलाते हैं। मैंने स्क्रीन आकार के संबंध में व्यूपोर्ट आकार को ट्रैक करने के लिए एक अजाक्स अनुरोध स्थापित किया है। Googlebot दो अलग-अलग स्क्रीन आकारों की रिपोर्ट कर रहा है।
टोक्सालॉट

मुझे पता है कि सवाल पुराना है और पहले से ही एक समाधान है लेकिन Google एनलिटीक्स एपीआई का उपयोग क्यों न करें यदि यह केवल एक मानव विचार काउंटर दिखाने के लिए है? stackoverflow.com/questions/19484009/…
कीसरब्रीज

3

यदि आप विचारों को गिनने के लिए जावास्क्रिप्ट का उपयोग करते हैं तो अधिकांश बॉट इसे नहीं चलाएंगे और इसलिए यह आपके दृश्य गणना में शामिल नहीं होगा। यह उत्तर आपको जो चाहिए, उसके करीब हो सकता है /programming/1973448/how-can-i-count-a-page-views


नहीं, मैं जावास्क्रिप्ट का उपयोग नहीं कर रहा हूँ। यह एक सामान्य PHP + MySQL वेबसाइट है। लेकिन वैसे भी उत्तर के लिए धन्यवाद :-)
eisberg

इस उत्तर को इतनी जल्दी छूट न दें। यहां तक ​​कि PHP + MySQL का उपयोग करने वाली साइट के साथ, आपके व्यू काउंटर को उत्पन्न करने के लिए कुछ भी आपको जावास्क्रिप्ट के उत्सर्जन से नहीं रोकता है। काउंटर को सीधे आउटपुट करने के बजाय, '<script> document.write (<काउंटर-कोड>) </ script>' जहाँ <काउंटर-कोड> जहाँ भी आपको अपना काउंटर बनाने की आवश्यकता है, कुछ आउटपुट करें।
इटई

@ इताई क्षमा करें, लेकिन मैं अपने आगंतुकों की गणना के लिए जावास्क्रिप्ट का उपयोग नहीं करूंगा। लेकिन फिर भी धन्यवाद।
इस्बर्ग

यदि आप जावास्क्रिप्ट का उपयोग नहीं करना चाहते हैं, तो बस इसे अपने प्रश्न में स्पष्ट रूप से डालें। जैसा कि इताई ने कहा, कुछ भी नहीं हमें एक PHP साइट के लिए जावास्क्रिप्ट समाधान के बारे में सोचने से रोकता है।
टीएन डू

दरअसल, कुछ बॉट कुछ जावास्क्रिप्ट चलाते हैं। मैंने स्क्रीन आकार के संबंध में व्यूपोर्ट आकार को ट्रैक करने के लिए एक अजाक्स अनुरोध स्थापित किया है। Googlebot दो अलग-अलग स्क्रीन आकारों की रिपोर्ट कर रहा है।
23

3

मेरे दृष्टिकोण में दो पास शामिल हैं:

  1. उपयोगकर्ता एजेंट स्ट्रिंग की शुरुआत के साथ मिलान करके केवल वेब ब्राउज़र और कंसोल को फ़िल्टर करें Mozilla|Opera|PSP|Bunjalloo|wii। इस जाँच को बिगाड़ने वाले उपयोगकर्ता एजेंट के लिए धन्यवाद, लगभग सभी ब्राउज़रों का पता लगाएगा
  2. आम स्टॉप स्ट्रिंग्स द्वारा बॉटल्स को बाहर निकालें bot|crawl|slurp|spider

इसलिए यदि पहला कदम पारित हो जाता है तो हम मान लेते हैं कि यह एक ब्राउज़र है और इसके पीछे एक वास्तविक आगंतुक है। जैसा कि मुझे पता चला कि कुछ बॉट Mozillaसंगत होने का दिखावा करते हैं और इसके साथ अपने यूजर एजेंट स्ट्रिंग को शुरू करते हैं। इसलिए दूसरा पास काम में आ सकता है और उन्हें खत्म कर सकता है।

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'] );
}

2

मैं केवल सरल उपयोगकर्ता एजेंट पार्सिंग बहिष्करण का उपयोग करता हूं। यह मेरे पृष्ठों में जाने वाले 99% बॉट से छुटकारा दिलाता है।

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%')

1
यह मदद नहीं करेगा (कम से कम मेरे मामले में) क्योंकि लगभग हर बॉट मैं अपने व्यवहार (बहुत तेजी से ब्राउज़िंग, सभी लिंक के कालानुक्रमिक ब्राउज़िंग, ...) से पहचान सकता है एक वैध उपयोगकर्ता-एजेंट का उपयोग करता है। लेकिन अन्य परियोजनाओं के लिए अच्छा विचार है।
इस्बर्ग

2

आप एक छवि का उपयोग एक काउंटर के रूप में कर सकते हैं, इस मामले में यह बॉट्स की गणना नहीं करेगा और पृष्ठ का नाम छवि नाम के साथ एक प्रश्न के रूप में पारित किया गया है

मैं इसका उपयोग img.php पर कर रहा हूं जो डेटाबेस में पेज व्यू को अपडेट करता है:

<?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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.