हमारा अधिकांश सर्च ट्रैफ़िक कभी इंसानों से आया ही नहीं
लेखक: Oleg Sidorkin, Cinevva के सीटीओ
हमारा ऑर्गेनिक सर्च ट्रैफ़िक बढ़ रहा है और पूरे साल बढ़ता रहा है। यह हिस्सा वास्तविक है। लेकिन जुलाई की शुरुआत में ग्राफ़ की रेखा इस तरह उछली जिसका हमारे किसी भी रिलीज़ से मेल नहीं था, और जिस उछाल के पीछे कोई कारण न हो, उस पर एक दोपहर लगाना उचित है।
हमने जाँच की और Google रेफ़रर के साथ आने वाला हेडलेस Chrome का एक बेड़ा पाया।
शिखर से अधिक मायने उसका स्वरूप रखता है
वसंत के दौरान नकली सेशन का हिस्सा कुल सेशन के एक-तिहाई से दो-तिहाई के बीच घूमता रहा। मोटे तौर पर यह वह पृष्ठभूमि शोर है जिसके साथ हर सार्वजनिक वेबसाइट को रहना पड़ता है।
जून के अंत में यह चढ़ने लगा और लगातार चढ़ता गया। अप्रैल के पहले सप्ताह से मापें तो जुलाई के मध्य तक वास्तविक सेशन लगभग 5.5 गुना बढ़े। ऑटोमेटेड सेशन लगभग 18.6 गुना बढ़े।
इसे देख पाना कठिन क्यों था
हम इन आँकड़ों पर कड़ी नज़र रखते हैं और बिना किसी स्पष्टीकरण के बदलने वाली हर चीज़ के लिए क्वेरी लिखते हैं। इसे समझने में वास्तविक छानबीन इसलिए लगी क्योंकि हमारी सेशन पंक्तियाँ सचमुच इन दोनों समूहों के बीच अंतर नहीं कर सकती थीं।
एंगेजमेंट का अनुमान प्रत्येक सेशन के last_activity_at टाइमस्टैम्प से लगाया जा रहा था। एक पेज वाले विज़िट में पहली बार लिखे जाने के बाद यह फ़ील्ड कभी नहीं बदलता।
इसलिए एक पेज लोड करके चले जाने वाला बॉट वही पंक्ति लिखता है जो किसी गाइड पर पहुँचकर उसे पाँच मिनट तक पढ़ने वाला व्यक्ति लिखता है। बाउंस रेट, साइट पर बिताया गया समय, एंगेजमेंट—ये सभी आँकड़े ऐसे फ़ील्ड से निकाले जाते थे जिसमें एक पेज वाले सेशन के लिए कोई जानकारी होती ही नहीं। यह असामान्य नहीं है। अधिकांश खुद बनाए गए एनालिटिक्स में यही डिफ़ॉल्ट होता है, और आपके सिस्टम में भी मैं सबसे पहले यही जाँचता।
समाधान था सेशन पंक्ति से अनुमान लगाना बंद करना और उसकी जगह एग्ज़िट बीकन पढ़ना, जो क्लाइंट से पेज पर बिताया गया वास्तविक समय और स्क्रॉल की गहराई रिपोर्ट करता है। अनुमान की जगह प्रमाण मिलते ही दोनों समूह तुरंत अलग हो गए।
| चिह्नित | बाकी सभी | |
|---|---|---|
| थोड़ा भी स्क्रॉल किया | 1.8% | 56.5% |
| किसी लॉग-इन अकाउंट से जुड़ा | 0.05% | 29% |
यह अंतर हमारा प्रमाण है कि क्लासिफ़ायर किसी वास्तविक चीज़ का वर्णन करता है, न कि शांत विज़िटर को रोबोट का लेबल लगा रहा है।
वास्तव में किसी बेड़े की पोल कैसे खुलती है
देखने के लिए यूज़र एजेंट सबसे खराब जगह है, क्योंकि उसे बदलना सबसे सस्ता है। सबसे अच्छा संकेत ग्राफ़िक्स कार्ड निकला।
डेटा सेंटर में चल रहे हेडलेस ब्राउज़र के पास GPU नहीं होता, इसलिए वे सॉफ़्टवेयर रेंडरिंग का सहारा लेते हैं और WebGL बिना दोबारा पूछे रेंडरर स्ट्रिंग रिपोर्ट कर देता है। SwiftShader, llvmpipe, Mesa OffScreen। वास्तविक विज़िटर के पास वास्तविक GPU होते हैं।
| संकेत | यह क्या पकड़ता है | हमारे प्रमाण में हिस्सा |
|---|---|---|
| सॉफ़्टवेयर GPU रेंडरर | कोई भौतिक ग्राफ़िक्स कार्ड नहीं | 90.5% |
| डेटा सेंटर या प्रॉक्सी ASN | किराए का नेटवर्क स्रोत | 58% |
navigator.webdriver | ऑटोमेशन फ़्लैग चालू छोड़ा गया | 10.4% |
नेटवर्क स्रोत ने अपेक्षा से कम मदद की। इनमें से लगभग हर दस में चार सेशन वास्तविक उपभोक्ता ISP के ज़रिए बाहर निकलते हैं। रेज़िडेंशियल प्रॉक्सी अब सस्ती हैं, और यह मानने वाला कोई भी नियम कि बॉट AWS से आते हैं, उनमें से लगभग आधे को पकड़ नहीं पाएगा।
बाकी सुराग उन भौतिक असंभवताओं से मिले जो क्लाइंट ने अपने बारे में रिपोर्ट की थीं। Chromium यूज़र एजेंट हमेशा ऐसे Safari टोकन पर समाप्त होता है जो उसके AppleWebKit टोकन से मेल खाता है और 2013 से 537.36 पर स्थिर है, लेकिन इस बेड़े ने टाइपो वाले Safari/537.35 और .38 भेजे। एक फ़ोन यूज़र एजेंट ने 1600x1200 स्क्रीन का दावा किया। दूसरे प्रकार ने पूर्णतः चौकोर 1600x1600 स्क्रीन का दावा किया। एक ने 1200x3000 का दावा किया—2.5:1 अनुपात वाला पोर्ट्रेट डेस्कटॉप मॉनिटर, जिसे कोई बनाता ही नहीं।
इनमें से हर एक किसी की एमुलेटर कॉन्फ़िग है, और जब तक आप विशेष रूप से इन्हें न खोजें, इनमें से कोई दिखाई नहीं देता।
हर बार चिह्नित करने पर बेड़े ने खुद को बदल लिया
पहली प्रोफ़ाइल Linux Chrome, Google रेफ़रर, America/New_York और 1920x1080 थी। हमने एक नियम लिखा।
एक प्रकार UTC पर 800x600 के साथ वापस आया। हमने नियम का दायरा बढ़ाया।
फिर China Mobile और Unicom के रेज़िडेंशियल पतों के ज़रिए आने वाला एक चीनी समूह दिखाई दिया, जिसके ब्राउज़र बिल्ड तय थे। इनमें मार्च 2022 का Chrome 99 और Chrome DevTools डिवाइस-एमुलेशन डिफ़ॉल्ट—2018 का WeChat चलाने वाला 2015 का Nexus 5—शामिल था। ये उपभोक्ता ISP के ज़रिए बाहर निकलते हैं, इसलिए हमारे सभी नेटवर्क नियम इनके विरुद्ध बेकार थे।
फिर Cox और Comcast पर एक अमेरिकी प्रकार दिखाई दिया, जो 1920x1080 पर मौजूदा और पूरी तरह विश्वसनीय Chrome 146 यूज़र एजेंट इस्तेमाल कर रहा था। उस फ़िंगरप्रिंट में कुछ भी गलत नहीं है और एक-एक सेशन को देखें तो उसे वास्तविक विज़िटर से अलग नहीं किया जा सकता।
इसलिए हमने जो अंतिम डिटेक्टर बनाया, वह अलग-अलग सेशन को नहीं देखता। वह पिछले 48 घंटों को देश, यूज़र एजेंट, स्क्रीन आकार और ट्रैफ़िक स्रोत के आधार पर समूहित करता है, फिर कम से कम 20 अनाम सेशन वाले ऐसे क्लस्टर खोजता है जिनमें 95% या अधिक ने न तो तीन सेकंड तक पढ़ा और न ही एक पिक्सेल स्क्रॉल किया।
वास्तविक विज़िटर इतनी सघनता से क्लस्टर नहीं बनाते। एक जैसे ब्राउज़र और एक जैसे रेज़ोल्यूशन पर बीस अजनबी, जो कुछ भी पढ़े बिना चले जाएँ, वास्तव में बीस पतों वाली एक मशीन हैं। क्लस्टर में जिसने भी पढ़ा या स्क्रॉल किया, वह इंसान ही रहता है, और वास्तविक अकाउंट से जुड़े सेशन को कभी चिह्नित नहीं किया जाता।
ऑडिट में विपरीत गलती भी मिली
आँकड़ों से नकली विज़िटर निकालते समय हमें वे वास्तविक विज़िटर भी मिले जिन्हें हम अब तक खारिज कर रहे थे।
वास्तविक पढ़ने का समय मिलने पर पता चला कि जिन मानवीय विज़िट को हमने बाउंस गिना था, उनमें से 34.2% ऐसे लोग थे जिन्होंने 30 सेकंड या उससे अधिक पढ़ा था या आधे पेज से आगे स्क्रॉल किया था। उन "विफलताओं" में से एक-तिहाई वास्तव में कंटेंट के काम करने के उदाहरण थे। Bing से आने वाले चीनी पाठक किसी एक गाइड पर पाँच मिनट बिता रहे थे और बाउंस के रूप में दर्ज हो रहे थे।
आँकड़े एक ही समय में दोनों दिशाओं में गलत थे और दोनों त्रुटियाँ एक ही गलत निष्कर्ष की ओर इशारा करती थीं। साथ मिलकर वे बताते हैं कि आपका ट्रैफ़िक बड़ा और सतही है, जबकि वास्तव में वह छोटा और अधिक गहरा है।
जिस चैनल के लिए हमने भुगतान किया, वही ईमानदार निकला
पिछले 30 दिन। इस अवधि के सभी सेशन में Google ऑर्गेनिक की हिस्सेदारी 63.7% थी।
ग्रोथ से जुड़ी हर सहज धारणा इसके विपरीत होती है। आप मानते हैं कि पेड चैनल में आपके साथ धोखाधड़ी हो रही है और ऑर्गेनिक चैनल आपने कमाया है। हमारे मामले में यह उलटा था।
अगर हमने जुलाई के आँकड़ों के आधार पर बजट फिर से आवंटित किया होता, तो हम वास्तव में इंसान लाने वाले चैनल से पैसा हटाकर एक स्क्रेपर के लिए अधिक कंटेंट बनाने में लगा देते।
इस पर एक दोपहर लगाना क्यों उचित है
आँकड़ा अपने आप में सिर्फ़ एक संख्या है। लेकिन उसके आधार पर तय होता है कि हम आगे कौन-से पेज लिखेंगे, किस लोकेल में निवेश करेंगे, कोई कैंपेन समीक्षा में बचेगा या नहीं, और तिमाही इतनी अच्छी दिखी या नहीं कि हम वही काम करते रहें। सस्ते प्रॉक्सी पूल वाला कोई अजनबी इन सभी फ़ैसलों को प्रभावित कर सकता है।
अगर आप कोई छोटी साइट चलाते हैं, तो अपनी ग्रोथ कर्व पर भरोसा करने से पहले GPU रेंडरर स्ट्रिंग और एग्ज़िट बीकन देखें।
और हमारे आँकड़ों को अंतिम निर्णय के बजाय न्यूनतम अनुमान मानें। यहाँ "इंसान" का अर्थ केवल "अभी तक पकड़ा नहीं गया" है, नियम उन फ़िंगरप्रिंट के आधार पर लिखे गए जिन्हें हमने संयोग से देखा, और हमें अब भी नहीं पता कि इस बेड़े को कौन चलाता है या उसे गेम बनाने वाली साइट से क्या चाहिए।
संबंधित:
- फ़िक्स्ड-कॉस्ट का जाल — एक और आँकड़ा जिसके पीछे कोई झटका सहने वाली व्यवस्था नहीं निकली
- हमने अपना WebGPU इंजन क्यों बनाया — जिस परत पर आप निर्भर हैं, उस पर अपना नियंत्रण रखने के बारे में यही तर्क
- गाइड — वह कंटेंट जिसे यह ऑडिट मापने वाला था