ब्राउज़र कंसोल में IAB GPP स्ट्रिंग को डीबग करना: चरण-दर-चरण ट्यूटोरियल
GPP की समस्याएँ पकड़ना कठिन क्यों है
जब कोई अमेरिकी विज़िटर अपने डेटा की बिक्री या साझाकरण से ऑप्ट-आउट करता है, तो वह चुनाव पेज के हर विज्ञापन पार्टनर तक पहुँचना चाहिए। IAB Global Privacy Platform (GPP) में यह एक संक्षिप्त स्ट्रिंग और सेक्शन ID की सूची के रूप में यात्रा करता है। अगर इनमें से कोई भी ग़लत हो — ग़ायब, पुराना या ग़लत सेक्शन लिए हुए — तो ऊपर से कुछ टूटता नहीं दिखता। विज्ञापन फिर भी लोड होते हैं, बैनर फिर भी ठीक दिखता है, और समस्या बाद में तब सामने आती है जब पार्टनर ऑप्ट-आउट को अनदेखा करते हैं या आपकी इन्वेंट्री पर कम बोली लगाते हैं।
अच्छी बात यह है कि लगभग सब कुछ ब्राउज़र कंसोल से जाँचा जा सकता है। यह ट्यूटोरियल उन जाँचों को उसी क्रम में बताता है जिसमें हम उन्हें किसी लाइव पेज पर चलाएँगे।
चरण 1: पुष्टि करें कि API मौजूद और तैयार है
GPP-संगत CMP एक ग्लोबल __gpp फ़ंक्शन उपलब्ध कराता है। अपने पेज पर DevTools खोलें और ping कमांड चलाएँ:
__gpp('ping', function (data) { console.log(data); });
लौटाया गया ऑब्जेक्ट एक नज़र में काफ़ी कुछ बता देता है:
- gppVersion — मौजूदा इम्प्लीमेंटेशन के लिए 1.1 होना चाहिए।
- cmpStatus — CMP लोड हो चुका है या उसमें त्रुटि आई है।
- cmpDisplayStatus — इस विज़िटर के लिए बैनर दिखाई दे रहा है, छिपा है या अक्षम है।
- signalStatus — जब CMP सहमति स्थिति तय कर लेता है तब “ready”, और जब तक निर्णय कर रहा हो तब “not ready”।
- supportedAPIs — वे सेक्शन जो CMP बना सकता है।
- applicableSections — वे सेक्शन ID जो इस समय इस विज़िटर पर लागू होते हैं।
- gppString — एन्कोड की गई स्ट्रिंग स्वयं।
अगर __gpp undefined है, तो CMP stub ग़ायब है या बहुत देर से लोड होता है। stub को उन सभी विज्ञापन स्क्रिप्ट से पहले मौजूद होना चाहिए जो उसकी अपेक्षा करती हैं, अन्यथा वे स्क्रिप्ट कोई CMP नहीं देखेंगी और या तो इंतज़ार करेंगी या बिना सिग्नल के आगे बढ़ जाएँगी।
चरण 2: लागू होने वाला सेक्शन जाँचें
GPP में हर प्राइवेसी फ़्रेमवर्क का एक संख्यात्मक सेक्शन ID होता है। प्रकाशकों के सामने सबसे अधिक आने वाले हैं 2 (EU TCF v2), 5 (कनाडाई TCF), 7 (US National, “usnat”) और कैलिफ़ोर्निया, वर्जीनिया, कोलोराडो, यूटा और कनेक्टिकट जैसे अलग-अलग राज्य सेक्शनों के लिए 8 से आगे। किसी अमेरिकी राज्य के विज़िटर को सामान्यतः applicableSections में या तो राष्ट्रीय सेक्शन या संबंधित राज्य सेक्शन दिखना चाहिए, EU सेक्शन नहीं।
कई स्थानों से परीक्षण करें। एक आम बग यह है कि CMP बैनर के लिए भूगोल सही पहचानता है लेकिन स्ट्रिंग में हर हाल में एक डिफ़ॉल्ट सेक्शन लिख देता है, या इसका उलटा। VPN या अपने CMP के प्रीव्यू टूल से, बैनर जो दिखाता है उसकी तुलना applicableSections की रिपोर्ट से करें।
चरण 3: सेक्शन डेटा पढ़ें
स्ट्रिंग को हाथ से डीकोड करने के बजाय CMP से पार्स किया हुआ सेक्शन माँगें:
__gpp('getSection', function (data, success) { console.log(data, success); }, 'usnat');
US National सेक्शन में ऑप्ट-आउट फ़ील्ड एक सरल परिपाटी का उपयोग करते हैं: 0 का अर्थ लागू नहीं, 1 का अर्थ उपयोगकर्ता ने ऑप्ट-आउट किया, और 2 का अर्थ उपयोगकर्ता ने ऑप्ट-आउट नहीं किया। पहले इन फ़ील्ड पर ध्यान दें:
- SaleOptOut और SharingOptOut
- TargetedAdvertisingOptOut
- संबंधित notice फ़ील्ड, जो दर्ज करते हैं कि विज़िटर को हर प्रथा की सूचना दी गई थी या नहीं
अब पेज पर ऑप्ट-आउट करें — अपने “Do Not Sell or Share” लिंक पर क्लिक करें या प्रेफ़रेंस सेंटर में सेटिंग टॉगल करें — और getSection फिर चलाएँ। ऑप्ट-आउट फ़ील्ड 2 से 1 हो जाने चाहिए। अगर नहीं होते, तो UI और सिग्नल आपस में सिंक में नहीं हैं।
चरण 4: Global Privacy Control का रास्ता परखें
कई राज्य क़ानून व्यवसायों से Global Privacy Control सिग्नल को ऑप्ट-आउट मानने की माँग करते हैं। GPC को किसी ऐसे ब्राउज़र या एक्सटेंशन में चालू करें जो इसे सपोर्ट करता हो, कंसोल में पुष्टि करें कि navigator.globalPrivacyControl true लौटाता है, फिर पेज को नए सत्र में लोड करें। संबंधित ऑप्ट-आउट फ़ील्ड में विज़िटर के बैनर को छुए बिना ही पहले से 1 दिखना चाहिए। कुछ सेक्शनों में एक ऐसा फ़ील्ड भी होता है जो बताता है कि चुनाव GPC सिग्नल से आया।
चरण 5: केवल स्नैपशॉट नहीं, इवेंट भी देखें
विज्ञापन स्क्रिप्ट को स्ट्रिंग पेज लोड पर एक बार पढ़कर भूल नहीं जाना चाहिए। पार्टनर क्या देखते हैं यह जानने के लिए एक listener रजिस्टर करें:
__gpp('addEventListener', function (evt) { console.log(evt.eventName, evt.pingData); });
आपको listenerRegistered, signalStatus और sectionChange जैसे इवेंट दिखने चाहिए। जब विज़िटर कोई चुनाव बदलता है, तो अद्यतन स्ट्रिंग के साथ एक sectionChange इवेंट आना चाहिए। अगर आपका हेडर बिडिंग wrapper या ऐड सर्वर इंटीग्रेशन स्ट्रिंग को केवल signalStatus के “ready” होने से पहले पढ़ता है, तो वह खाली या पुराना मान भेज सकता है।
चरण 6: स्ट्रिंग को विज्ञापन अनुरोधों तक फ़ॉलो करें
अंत में Network टैब खोलें और अपने विज्ञापन अनुरोधों को फ़िल्टर करें। कई विज्ञापन एंडपॉइंट gpp और gpp_sid पैरामीटर स्वीकार करते हैं (स्ट्रिंग और लागू सेक्शन ID)। जाँचें कि:
- अमेरिकी विज़िटरों के अनुरोधों में दोनों पैरामीटर मौजूद हैं;
- स्ट्रिंग उसी से मेल खाती है जो अनुरोध के समय ping ने लौटाई थी;
- ऑप्ट-आउट के बाद के अनुरोध कैश की हुई स्ट्रिंग की जगह नई स्ट्रिंग लेकर चलते हैं।
यदि आप Prebid.js उपयोग करते हैं, तो पुष्टि करें कि इसका कंसेंट मैनेजमेंट मॉड्यूल GPP के लिए कॉन्फ़िगर है, और wrapper से निकलने वाले बिड अनुरोधों के साथ-साथ अंतिम ऐड सर्वर कॉल को भी जाँचें।
सामान्य विफलता पैटर्न
- stub विज्ञापन टैग के बाद लोड होता है — पार्टनरों को कोई CMP दिखता ही नहीं।
- क्षेत्र के लिए ग़लत सेक्शन — अमेरिकी ट्रैफ़िक के लिए EU सेक्शन भेजा गया, या कोई सेक्शन ही नहीं।
- UI और सिग्नल सिंक से बाहर — टॉगल बदलता है, स्ट्रिंग नहीं बदलती।
- GPC अनदेखा — ब्राउज़र सिग्नल कभी ऑप्ट-आउट नहीं बनता।
- अनुरोधों में पुरानी स्ट्रिंग — wrapper पहली देखी गई वैल्यू को कैश कर लेता है।
मुख्य बातें
- ping से शुरू करें: संस्करण, स्थिति, लागू सेक्शन और स्ट्रिंग से अधिकांश कहानी पता चल जाती है।
- ऑप्ट-आउट फ़ील्ड पढ़ने के लिए getSection का उपयोग करें; 1 का अर्थ ऑप्ट-आउट किया, 2 का अर्थ ऑप्ट-आउट नहीं किया।
- ऑप्ट-आउट लिंक और GPC को अलग-अलग परखें और पुष्टि करें कि दोनों सिग्नल बदलते हैं।
- इवेंट सुनें और विज्ञापन अनुरोधों द्वारा स्ट्रिंग पढ़ने से पहले “ready” सिग्नल की प्रतीक्षा करें।
- ऑप्ट-आउट से पहले और बाद में वास्तविक नेटवर्क अनुरोधों में gpp और gpp_sid सत्यापित करें।