कुकी के बिना गिनती
विज़िटर काउंटर का एक काम मुश्किल है: उसे दो विज़िट को अलग-अलग पहचानना होता है। अगर वह ऐसा न कर पाए, तो किसी पेज को दस बार रीलोड करने वाला एक व्यक्ति दस लोगों जैसा दिखता है, और वेबसाइट पर दिखने वाली संख्या कोरी कल्पना बन जाती है।
आम तौर पर इसका हल कुकी होती है। यह वेबसाइट कुकी इस्तेमाल नहीं करती। यहाँ बताया गया है कि इसके बजाय वह क्या करती है, और यह वाक्य ईमानदारी से कह पाने के लिए कुछ मेहनत क्यों करनी पड़ी।
वह कुकी जो किसी ने नहीं माँगी
इस साल तक काउंटर का हर अनुरोध एक PHP सेशन शुरू करता था। यह कोड की बस एक लाइन है, देखने में हानिरहित, और इसका मतलब यह था कि Stats4U काउंटर इस्तेमाल करने वाली हर वेबसाइट के हर विज़िटर को एक सेशन कुकी मिलती थी – हमारी ओर से, किसी और के पेज पर, और दोनों में से किसी भी पक्ष के चाहे बिना।
सेशन का कभी किसी चीज़ के लिए इस्तेमाल नहीं हुआ। जैसे ही किसी ने देखा, इसका सबूत आसानी से मिल गया: जिस डायरेक्टरी में सेशन रखे जाते हैं, उसमें एक भी फ़ाइल नहीं थी। यह सालों से दूसरों की वेबसाइटों पर कुकी सेट कर रहा था, ऐसे डेटा के लिए जो न कभी लिखा गया और न कभी पढ़ा गया।
गिनती की प्रक्रिया से इसे हटा दिया गया है। अब सेशन सिर्फ़ तब शुरू होता है, जब कोई काउंटर बनाता है या उसकी सेटिंग बदलता है – यानी ऐसा काम, जो वह जान-बूझकर इसी वेबसाइट पर करता है।
इसकी जगह क्या आया
विज़िटरों को एक हैश से अलग-अलग पहचाना जाता है। इसमें पाँच चीज़ें जाती हैं:
- IP पता
- यूज़र एजेंट
- काउंटर नंबर
- आज की तारीख
- एक गुप्त कुंजी, जो हर दिन बदलती है
नतीजा 16 बाइट होता है, और यही सहेजा जाता है। इसे दो दिन रखा जाता है और फिर मिटा दिया जाता है। IP पता खुद किसी भी चरण में कहीं लिखा नहीं जाता।
एक ही व्यक्ति की एक ही दिन एक ही काउंटर पर दो विज़िट से वही 16 बाइट बनते हैं, इसलिए दूसरी विज़िट दोहराव के रूप में पहचानी जाती है। अगले दिन वही व्यक्ति बिल्कुल अलग नतीजा देता है, क्योंकि तारीख और गुप्त कुंजी दोनों बदल चुकी होती हैं। पूरा तरीका बस इतना ही है।
गुप्त कुंजी क्यों बदलती रहती है
इसी हिस्से में गलती करना आसान है, और यहाँ इस साल तक यह गलत ही था।
पुराना वर्ज़न एक स्थायी गुप्त कुंजी इस्तेमाल करता था। उससे भी अलग-अलग लोगों के लिए अलग-अलग हैश बनते थे, जो ठीक लगता है। लेकिन इसका मतलब यह था कि जिसके पास भी वह कुंजी हो, वह किसी संदिग्ध IP पते को लेकर आर्काइव के किसी भी दिन के लिए उसका हैश दोबारा निकाल सकता था – और इस तरह 16 बाइट के अनाम मानों की एक टेबल को फिर से इस बात के रिकॉर्ड में बदल सकता था कि किसने क्या देखा, उतना पीछे तक जितना डेटा मौजूद था।
अब गुप्त कुंजी हर दिन बदलती है और पुरानी कुंजियाँ दो दिन बाद मिटा दी जाती हैं। ऐसा हो जाने के बाद यह हिसाब कोई भी दोबारा नहीं लगा सकता। इसमें वह भी शामिल है, जो यह वेबसाइट चलाता है – और असली बात यही है: जो सुरक्षा संचालक के अच्छे व्यवहार पर निर्भर हो, वह सुरक्षा नहीं, बस एक वादा है।
स्क्रीन रिज़ॉल्यूशन – और चीज़ें हटाने के बारे में एक सबक
पहले स्क्रीन रिज़ॉल्यूशन इकट्ठा किया जाता था। यह फ़िंगरप्रिंटिंग का एक जाना-माना संकेत है, और इसकी कीमत इसके फ़ायदे से ज़्यादा थी, इसलिए इसे उस स्क्रिप्ट से हटा दिया गया जो एम्बेड करने वाले पेज पर चलती है।
यह काफ़ी नहीं था, और इसकी वजह हर उस व्यक्ति के लिए जानने लायक है जो दूसरों की वेबसाइटों के लिए चीज़ें बनाता है। स्क्रिप्ट सात दिन के कैश समय के साथ भेजी जाती है, इसलिए बदलाव के बाद एक हफ़्ते तक पुरानी कॉपियाँ विज़िटरों के ब्राउज़र में चलती रहीं। इससे भी बुरा यह कि कुछ वेबसाइटें स्क्रिप्ट से लिंक करती ही नहीं – उन्होंने सालों पहले उसकी एक कॉपी अपने पेजों में पेस्ट कर ली थी, और वह कॉपी हमेशा वही करती रहेगी जो वह पेस्ट किए जाने के दिन करती थी।
इसलिए रिज़ॉल्यूशन आता रहा। समाधान यह था कि सर्वर इस मान को लेने से मना कर दे, चाहे उसे कोई भी भेजे। क्लाइंट से डेटा इकट्ठा करना हटाने पर सिर्फ़ नए क्लाइंट रुकते हैं। सर्वर से हटाने पर यह तुरंत रुक जाता है।
इसकी जाँच
सिर्फ़ दावे के रूप में इसका कोई खास मोल नहीं, इसलिए यह रहा कमांड:
- curl -sk -D - -o /dev/null 'https://www.stats4u.net/index.php?action=pic&s4uid=1' | grep -i set-cookie
कोई आउटपुट न आए, तो इसका मतलब है कि कोई कुकी सेट नहीं हुई।
आखिर में एक सावधानी, वही जो हमेशा होती है: यह बताता है कि सॉफ़्टवेयर क्या करता है। यह किसी खास देश में लागू नियमों को पूरा करता है या नहीं, यह सवाल ऐसे व्यक्ति के लिए है जो इसका जवाब देने के योग्य हो – और यह वह जवाब नहीं है।
अपडेट, 11 सितंबर 2026: 27 अगस्त 2026 से स्क्रिप्ट ने हर उस वेबसाइट पर, जिसने उसे एम्बेड किया था, स्क्रीन रिज़ॉल्यूशन, ब्राउज़र विंडो की चौड़ाई और पिक्सेल अनुपात फिर से पढ़ना शुरू कर दिया था। 11 सितंबर 2026 से वह ऐसा सिर्फ़ वहीं करती है, जहाँ वेबसाइट संचालक इसे इस एट्रिब्यूट से चालू करता है: data-screen="1"। इस एट्रिब्यूट के बिना मौजूदा स्क्रिप्ट इन तीनों में से कुछ भी नहीं पढ़ती, और सर्वर अब पुरानी कॉपियों से आए ये मान भी नहीं सहेजता।