2008-09-05 9 views
7

मुझे पता है कि स्टैक ओवरफ्लो के पास प्रत्येक प्रश्न के लिए विचार हैं और ये दृश्य संख्या काफी कम और सटीक हैं।खोज इंजन को अनदेखा करते हुए किसी पृष्ठ के लिए विचारों की संख्या की गणना करना?

मेरे पास मेरी साइटों में से एक जैसी ही चीज़ है। जब भी पृष्ठ बैकएंड कोड में लोड होता है तो यह मूल रूप से "हिट" लॉग करता है। दुर्भाग्यवश यह खोज इंजन हिट के लिए भी फूला हुआ और गलत संख्या देने के लिए करता है।

मुझे लगता है कि एक रोबोट गिनने का एक तरीका पृष्ठ को लोड होने के बाद एक एजेक्स कॉल के साथ गिनती देखने के लिए होगा, लेकिन मुझे यकीन है कि आपके हिट काउंटर में खोज इंजनों को अनदेखा करने के अन्य, बेहतर तरीके हैं उन्हें अपनी साइट को क्रॉल करने के लिए अनुमति देना। क्या आप किसी को जानते हैं?

उत्तर

4

एक AJAX कॉल ऐसा करेगा, लेकिन आम तौर पर खोज इंजन छवियों, जावास्क्रिप्ट या सीएसएस फ़ाइलों को लोड नहीं करेंगे, इसलिए पृष्ठ में उन फ़ाइलों में से एक को शामिल करना आसान हो सकता है, और उस पृष्ठ का यूआरएल पास करना जो आप चाहते हैं फ़ाइल अनुरोध में पैरामीटर के रूप में एक अनुरोध लॉग करें।

उदाहरण के लिए, पेज में ...

http://www.example.com/example.html

आप सिर अनुभाग

<link href="empty.css?log=example.html" rel="stylesheet" type="text/css" /> 

में शामिल करें और अपने सर्वर साइड अनुरोध लॉग ऑन हो सकता है, तो एक खाली सीएसएस वापसी फ़ाइल। जावास्क्रिप्ट या छवि फ़ाइल पर एक ही दृष्टिकोण लागू होगा, हालांकि सभी मामलों में आप सावधानीपूर्वक देखना चाहते हैं कि कैशिंग हो सकती है।

एक और विकल्प खोज इंजन को उनके user agent के आधार पर समाप्त करना होगा। शुरू करने के लिए http://user-agents.org/ पर संभावित उपयोगकर्ता एजेंटों की एक बड़ी सूची है। बेशक, आप दूसरी तरफ जा सकते हैं, और केवल उन चीजों से अनुरोधों को गिन सकते हैं जिन्हें आप जानते हैं वेब ब्राउज़र हैं (आईई, फ़ायरफ़ॉक्स, सफारी, ओपेरा को कवर करना और यह नई भाषा वाली क्रोम चीज आपको वहां से 99% रास्ता मिल जाएगी)।

awstats जैसे लॉग एनालिटिक्स टूल या Google analytics जैसी सेवा का उपयोग करना आसान होगा, जिनमें से दोनों ने पहले से ही इस समस्या को हल कर लिया है।

+0

हम एक ajax पोस्ट करने के लिए हमारे वेतन वृद्धि विधि बदल दिया है - हालांकि जावास्क्रिप्ट के बिना उपयोगकर्ताओं को एक प्रश्न के देखे जाने की संख्या को प्रभावित नहीं करेगा, हम नहीं था एक बॉट ब्लैकलिस्ट नहीं चाहते हैं, या तो! –

+2

खोज इंजन सीएसएस फाइलों तक पहुंचते हैं: http://www.free-seo-news.com/newsletter246.htm ... जब आप Google कैश में कुछ साइटें चेक करते हैं, तो वे स्टाइल होते हैं, यह पुष्टि करता है कि वे स्कैन और सेव करते हैं सीएसएस फाइलें। – davidhq

+1

मुझे यकीन है कि सर्च इंजन अब जावास्क्रिप्ट निष्पादित करते हैं – Nate

0

कारण स्टैक ओवरफ़्लो में सटीक दृश्य गणना है कि यह केवल एक बार प्रत्येक दृश्य/उपयोगकर्ता को गिनती है।

थर्ड-पार्टी हिट काउंटर (और वेब आंकड़े) एप्लिकेशन प्रायः खोज इंजन फ़िल्टर करता है और उन्हें एक अलग विंडो/टैब/सेक्शन में प्रदर्शित करता है।

0

आप या तो AJAX के साथ अपने प्रश्न में जो कुछ कहा है उसे करने के लिए आपको जा रहे हैं। या उपयोगकर्ता-एजेंट स्ट्रिंग को बाहर निकालें जो खोज इंजन ज्ञात हैं। बॉट्स को रोकने का एकमात्र निश्चित तरीका AJAX के साथ है।

1

आपको वास्तव में AJAX का उपयोग करने की आवश्यकता नहीं है, बस आईफ्रेम ऑफ स्क्रीन जोड़ने के लिए जावास्क्रिप्ट का उपयोग करें। यह सरल

<script type="javascript"> 
document.write('<iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0">'); 
</script> 
2

इस समस्या को मैं एक साधारण फिल्टर है कि HTTP अनुरोध में उपयोगकर्ता-एजेंट हैडर को देखो और जाना जाता रोबोटों की एक सूची के साथ उसकी तुलना करेंगे कार्यान्वित हल करने के लिए रखें।

मुझे रोबोट सूची www.robotstxt.org से मिली है। यह एक साधारण टेक्स्ट-प्रारूप में डाउनलोड करने योग्य है जिसे "ब्लैकलिस्ट" को स्वतः उत्पन्न करने के लिए आसानी से पार्स किया जा सकता है।

1

मैट शेपर्ड का जवाब देने के लिए एक विस्तार निम्नलिखित की तरह कुछ हो सकता है:

<script type="text/javascript"> 
    var thePg=window.location.pathname; 
    var theSite=window.location.hostname; 
    var theImage=new Image; 
    theImage.src="/test/hitcounter.php?pg=" + thePg + "?site=" + theSite; 
    </script> 

जो पेज नाम सर्वर साइड स्थानापन्न करने की जरूरत के बिना एक पृष्ठ पर शीर्ष लेख या पाद लेख टेम्पलेट में खामियों को दूर किया जा सकता है। ध्यान दें कि यदि आप क्वेरी स्ट्रिंग (window.location.search) को शामिल करते हैं, तो इसका एक मजबूत संस्करण स्ट्रिंग को एन्कोड करना चाहिए ताकि त्रुटियों को पृष्ठ अनुरोधों को क्राफ्ट करने से रोका जा सके जो URL में अजीब सामग्री के आधार पर भेद्यता का फायदा उठाते हैं। इस बनाम एक नियमित <img> टैग या के बारे में अच्छी बात यह है कि हिट काउंटर स्क्रिप्ट के साथ कोई समस्या होने पर उपयोगकर्ता को लाल एक्स दिखाई नहीं देगा। कुछ मामलों में, ब्राउज़र द्वारा देखा गया URL, पुनः लिखने से पहले, यह भी महत्वपूर्ण है कि सर्वर-साइड होता है, और यह आपको देता है। यदि आप इसे दोनों तरीकों से चाहते हैं, तो एक और पैरामीटर सर्वर-साइड जोड़ें जो पेज स्ट्रिंग के उस संस्करण को क्वेरी स्ट्रिंग में भी सम्मिलित करता है।

इस पेज के एक परीक्षण से लॉग फ़ाइलों का एक उदाहरण:

10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/testpage.html HTTP/1.1" 200 306 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16" 
10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/hitcounter.php?pg=/test/testpage.html?site=www.home.***.com HTTP/1.1" 301 - "http://www.home.***.com/test/testpage.html" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16" 
संबंधित मुद्दे