FLEDGE API डेवलपर गाइड

यह लेख किसके लिए है?

यह पोस्ट, एक्सपेरिमेंट के तौर पर उपलब्ध Protected Audience API के मौजूदा वर्शन के बारे में तकनीकी जानकारी देने वाली पोस्ट है.

  • Protected Audience API, प्रस्ताव की कम तकनीकी खास जानकारी है. इसमें ग्लॉसरी भी शामिल है.

  • Protected Audience का डेमो, FLEDGE को डिप्लॉय करने के बुनियादी तरीके के बारे में जानकारी देता है.

  • Protected Audience के डेमो वीडियो में बताया गया है कि डेमो कोड कैसे काम करता है. साथ ही, Protected Audience की डीबगिंग के लिए, Chrome DevTools का इस्तेमाल करने का तरीका भी बताया गया है.

Protected Audience क्या है?

Protected Audience API, Privacy Sandbox का एक प्रस्ताव है. इसका इस्तेमाल, रीमार्केटिंग और कस्टम ऑडियंस को विज्ञापन दिखाने के लिए होता है. इस टेक्नोलॉजी की खासियत यह है कि साइटों पर ब्राउज़िंग से जुड़ी लोगों की गतिविधियों को तीसरा पक्ष ट्रैक नहीं कर सकता. यह एपीआई, ब्राउज़र की मदद से उपयोगकर्ता के डिवाइस पर होने वाली नीलामियों को चालू करता है. इससे, उपयोगकर्ता को उन वेबसाइटों के लिए काम के विज्ञापन दिखाए जा सकते हैं जिन पर वह पहले भी जा चुका है.

Protected Audience, TURTLEDOVE फ़ैमिली के प्रस्तावों में से पहला ऐसा प्रयोग है जिसे Chromium में लागू किया जा रहा है.

नीचे दिए गए डायग्राम में, FLEDGE के लाइफ़साइकल के बारे में खास जानकारी दी गई है:

FLEDGE लाइफ़साइकल के हर चरण की खास जानकारी देने वाली इमेज
FLEDGE की लाइफ़ साइकल.

मैं Protected Audience को कैसे आज़माऊं?

Protected Audience API का डेमो

विज्ञापन देने वाली कंपनियों और पब्लिशर की साइटों पर, Protected Audience को डिप्लॉय करने के बुनियादी तरीके के बारे में जानकारी protected-audience-demo.web.app पर उपलब्ध है.

डेमो वीडियो में बताया गया है कि डेमो कोड कैसे काम करता है. साथ ही, Protected Audience की डीबगिंग के लिए, Chrome DevTools का इस्तेमाल करने का तरीका भी बताया गया है.

Protected Audience के ऑरिजिन ट्रायल में हिस्सा लेना

Privacy Sandbox के काम के होने और मेज़रमेंट के ऑरिजिन ट्रायल को, डेस्कटॉप पर Chrome Beta 101.0.4951.26 और उसके बाद के वर्शन में उपलब्ध कराया गया है. यह ट्रायल, Protected Audience, Topics, और Attribution Reporting एपीआई के लिए उपलब्ध है.

इसमें हिस्सा लेने के लिए, ऑरिजिन ट्रायल टोकन के लिए रजिस्टर करें.

मुफ़्त में आज़माने की सुविधा के लिए रजिस्टर करने के बाद, उन पेजों पर Protected Audience JavaScript API आज़माया जा सकता है जो मान्य मुफ़्त में आज़माने का टोकन देते हैं: उदाहरण के लिए, ब्राउज़र से एक या उससे ज़्यादा इंटरेस्ट ग्रुप में शामिल होने के लिए कहें. इसके बाद, विज्ञापन चुनने और दिखाने के लिए विज्ञापन नीलामी चलाएं.

Protected Audience डेमो, Protected Audience को एंड-टू-एंड डिप्लॉय करने का बुनियादी उदाहरण देता है.

हर उस पेज के लिए ट्रायल टोकन दें जिस पर आपको Protected Audience API कोड चलाना है:

  • <head> में मेटा टैग के तौर पर:

    <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">

  • एचटीटीपी हेडर के तौर पर:

    Origin-Trial: TOKEN_GOES_HERE

  • प्रोग्राम के हिसाब से टोकन देकर:

    const otMeta = document.createElement('meta');
    otMeta.httpEquiv = 'origin-trial';
    otMeta.content = 'TOKEN_GOES_HERE';
    document.head.append(otMeta);
    

Protected Audience कोड चलाने वाले iframe को, अपने ऑरिजिन से मैच करने वाला टोकन देना होगा. जैसे, किसी दिलचस्पी के ग्रुप के मालिक का navigator.joinAdInterestGroup() कॉल.

सुरक्षित ऑडियंस के ऑरिजिन के लिए, पहले ट्रायल के बारे में जानकारी में, पहले ट्रायल के लक्ष्यों के बारे में ज़्यादा जानकारी दी गई है. साथ ही, यह भी बताया गया है कि इसमें कौनसी सुविधाएं काम करती हैं.

इस एपीआई की जांच करना

डेस्कटॉप पर, Chrome के बीटा वर्शन 101.0.4951.26 और उसके बाद के वर्शन में, किसी एक उपयोगकर्ता के लिए Protected Audience की जांच की जा सकती है:

  • chrome://settings/adPrivacy में जाकर, विज्ञापन देखने वाले की निजता बनाए रखने से जुड़े सभी एपीआई चालू करके
  • कमांड लाइन से फ़्लैग सेट करके.

iframe या फ़ेंस किए गए फ़्रेम में विज्ञापन रेंडर करना

विज्ञापनों को <iframe> या <fencedframe> में रेंडर किया जा सकता है. यह इस बात पर निर्भर करता है कि कौनसे फ़्लैग सेट हैं.

विज्ञापनों को रेंडर करने के लिए <fencedframe> का इस्तेमाल करने के लिए:

--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,FencedFrames

विज्ञापनों को रेंडर करने के लिए <iframe> का इस्तेमाल करने के लिए:

--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,AllowURNsInIframes --disable-features=FencedFrames

डीबग के दौरान कुछ समय के लिए होने वाली हार/जीत की रिपोर्टिंग के तरीके चालू करने के लिए, BiddingAndScoringDebugReportingAPI फ़्लैग शामिल करें.

फ़्लैग के साथ Chromium चलाना में, कमांड लाइन से Chrome और Chromium पर आधारित अन्य ब्राउज़र चलाते समय फ़्लैग सेट करने का तरीका बताया गया है. Protected Audience फ़्लैग की पूरी सूची, Chromium कोड सर्च में उपलब्ध है.

Chrome के नए वर्शन में कौनसी सुविधाएं काम करती हैं?

सुरक्षित ऑडियंस की सुविधा को Chromium में सुविधा फ़्लैग के पीछे उपलब्ध कराया जा रहा है. यह पहला प्रयोग है, जिसमें सुरक्षित ऑडियंस के प्रस्ताव की इन सुविधाओं को टेस्ट किया जा रहा है:

  • एक जैसी दिलचस्पी वाले ग्रुप: ब्राउज़र में सेव किए जाते हैं. इनमें विज्ञापन बिडिंग और रेंडरिंग को कॉन्फ़िगर करने के लिए, इससे जुड़ा मेटाडेटा भी होता है.
  • खरीदारों (डीएसपी या विज्ञापन देने वाले) की ओर से डिवाइस पर बिडिंग: यह सेव किए गए एक जैसे दिलचस्पी वाले ग्रुप और सेलर के सिग्नल के आधार पर होती है.
  • सेलर (एसएसपी या पब्लिशर) के हिसाब से डिवाइस पर विज्ञापन चुनना: यह नीलामी की बिड और खरीदारों के मेटाडेटा के आधार पर होता है.
  • फ़ेंस किए गए फ़्रेम के कुछ समय के लिए हटाए गए वर्शन में विज्ञापन रेंडर करना: विज्ञापन रेंडर करने के लिए, नेटवर्क ऐक्सेस और लॉगिंग की अनुमति है.

एपीआई के बारे में जानकारी देने वाले लेख में, सुविधा के साथ काम करने और उससे जुड़ी पाबंदियों के बारे में ज़्यादा जानकारी मिलती है.

इंटरेस्ट ग्रुप की अनुमतियां

Protected Audience को फ़िलहाल लागू करने के तरीके के मुताबिक, किसी पेज पर कहीं से भी joinAdInterestGroup() को कॉल करने की अनुमति होती है. यहां तक कि क्रॉस-डोमेन iframe से भी joinAdInterestGroup() को कॉल किया जा सकता है. आने वाले समय में, जब साइट के मालिकों को क्रॉस-डोमेन iframe की अनुमतियों की नीतियों में बदलाव करने का समय मिल जाएगा, तब क्रॉस-डोमेन iframe से कॉल करने की अनुमति नहीं दी जाएगी. इस बारे में ज़्यादा जानकारी, इस लेख में दी गई है.

कुंजी/वैल्यू सेवा

सुरक्षित ऑडियंस की विज्ञापन नीलामी के हिस्से के तौर पर, ब्राउज़र कीवर्ड/वैल्यू सेवा को ऐक्सेस कर सकता है. यह सेवा, विज्ञापन खरीदार को जानकारी देने के लिए, आसान कीवर्ड-वैल्यू पेयर दिखाती है. जैसे, कैंपेन का बचा हुआ बजट. सुरक्षित ऑडियंस के प्रस्ताव में यह ज़रूरी है कि यह सर्वर "कोई इवेंट-लेवल लॉगिंग न करता हो और इन अनुरोधों के आधार पर कोई और असर न पड़ता हो".

Protected Audience की कुंजी/वैल्यू की सेवा का कोड, अब Privacy Sandbox के GitHub रिपॉज़िटरी में उपलब्ध है. इस सेवा का इस्तेमाल, Chrome और Android डेवलपर कर सकते हैं. स्टेटस के बारे में अपडेट पाने के लिए, एलान वाली ब्लॉग पोस्ट देखें. एपीआई के बारे में जानकारी और भरोसे के मॉडल के बारे में जानकारी से, Protected Audience की कुंजी/वैल्यू सेवा के बारे में ज़्यादा जानें.

शुरुआती जांच के लिए, "अपना सर्वर लाएं" मॉडल का इस्तेमाल किया जाता है. लंबे समय में, विज्ञापन टेक्नोलॉजी कंपनियों को रीयल-टाइम डेटा पाने के लिए, भरोसेमंद एक्सीक्यूशन एनवायरमेंट में चल रही, ओपन-सोर्स की Protected Audience की-वैल्यू सेवाओं का इस्तेमाल करना होगा.

यह पक्का करने के लिए कि इकोसिस्टम के पास टेस्ट करने के लिए ज़रूरत के मुताबिक समय हो, हमें उम्मीद है कि तीसरे पक्ष की कुकी के बंद होने के कुछ समय बाद तक, ओपन-सोर्स की-वैल्यू सेवाओं या टीईई का इस्तेमाल करने की ज़रूरत नहीं होगी. इस ट्रांज़िशन से पहले, हम डेवलपर को इसकी सूचना देंगे, ताकि वे टेस्टिंग और इसे अपनाने की प्रोसेस शुरू कर सकें.

सुविधा के इस्तेमाल के लिए सहायता का पता लगाना

एपीआई का इस्तेमाल करने से पहले, देख लें कि वह ब्राउज़र पर काम करता है या नहीं. साथ ही, यह भी देख लें कि वह दस्तावेज़ में उपलब्ध है या नहीं:

'joinAdInterestGroup' in navigator &&
  document.featurePolicy.allowsFeature('join-ad-interest-group') &&
  document.featurePolicy.allowsFeature('run-ad-auction') ?
  console.log('navigator.joinAdInterestGroup() is supported on this page') :
  console.log('navigator.joinAdInterestGroup() is not supported on this page');

मैं Protected Audience से कैसे ऑप्ट आउट करूं?

साइट के मालिक या किसी उपयोगकर्ता के तौर पर, Protected Audience API का ऐक्सेस ब्लॉक किया जा सकता है.

साइटें ऐक्सेस को कैसे कंट्रोल कर सकती हैं?

सुरक्षित ऑडियंस की सुविधा का इस्तेमाल करने के लिए, साइटों को अनुमतियों की नीति सेट करनी होगी. इससे यह पक्का करने में मदद मिलेगी कि तीसरे पक्ष, साइट की अनुमति के बिना एपीआई का इस्तेमाल न कर सकें. हालांकि, पहले ऑरिजिन ट्रायल के दौरान टेस्टिंग को आसान बनाने के लिए, इस ज़रूरी शर्त को डिफ़ॉल्ट रूप से माफ़ कर दिया जाता है. जिन साइटों को टेस्टिंग की अवधि के दौरान, Protected Audience की सुविधा को साफ़ तौर पर बंद करना है वे ऐक्सेस को ब्लॉक करने के लिए, अनुमतियों से जुड़ी नीति का इस्तेमाल कर सकती हैं.

Protected Audience की अनुमतियों से जुड़ी दो नीतियां हैं, जिन्हें अलग से सेट किया जा सकता है:

  • join-ad-interest-group, रुचि के ग्रुप में ब्राउज़र जोड़ने की सुविधा को चालू/बंद करता है
  • run-ad-auction, डिवाइस पर ऑक्शन चलाने की सुविधा को चालू या बंद करता है

एचटीटीपी रिस्पॉन्स हेडर में अनुमतियों से जुड़ी यह नीति बताकर, पहले पक्ष के संदर्भों में Protected Audience API का ऐक्सेस पूरी तरह से बंद किया जा सकता है:

Permissions-Policy: join-ad-interest-group=(), run-ad-auction=()

iframe एलिमेंट में यह allow एट्रिब्यूट जोड़कर, iframe में एपीआई के इस्तेमाल को बंद किया जा सकता है:

<iframe src="https://example.com" allow="join-ad-interest-group 'none'; run-ad-auction 'none'"></iframe>

सुरक्षित ऑडियंस के ऑरिजिन ट्रायल के लिए सुझाई गई अनुमतियों की नीति सेक्शन में ज़्यादा जानकारी दी गई है.

उपयोगकर्ता के लिए ऑप्ट-आउट करने का विकल्प

कोई उपयोगकर्ता, Protected Audience API और Privacy Sandbox की अन्य सुविधाओं का ऐक्सेस ब्लॉक कर सकता है. इसके लिए, इनमें से किसी भी तरीके का इस्तेमाल किया जा सकता है:

  • Chrome की सेटिंग में जाकर, Privacy Sandbox के ट्रायल बंद करें: सेटिंग > सुरक्षा और निजता > Privacy Sandbox. इसे chrome://settings/adPrivacy पर भी ऐक्सेस किया जा सकता है.
  • Chrome की सेटिंग में जाकर, तीसरे पक्ष की कुकी बंद करें: सेटिंग > सुरक्षा और निजता.
  • chrome://settings/cookies से, कुकी और साइट का अन्य डेटा को "तीसरे पक्ष की कुकी ब्लॉक करें" या "सभी कुकी ब्लॉक करें" पर सेट करें.
  • गुप्त मोड का इस्तेमाल करें.

Protected Audience के बारे में बताने वाले लेख में, एपीआई के डिज़ाइन एलिमेंट के बारे में ज़्यादा जानकारी दी गई है. साथ ही, यह भी बताया गया है कि एपीआई, निजता के लक्ष्यों को कैसे पूरा करता है.

Protected Audience के वर्कलेट डीबग करना

Chrome Canary 98.0.4718.0 से, Chrome DevTools में Protected Audience वर्कलेट को डीबग किया जा सकता है.

पहला चरण, सोर्स पैनल में इवेंट लिसनर ब्रेकपॉइंट पैनल में, नई कैटगरी के ज़रिए ब्रेकपॉइंट सेट करना है.

Chrome Canary में DevTools का स्क्रीनशॉट, जिसमें सोर्स पैनल में इवेंट लिस्नर ब्रेकपॉइंट पैनल को हाइलाइट किया गया है.
   बिडर बिडिंग फ़ेज़ शुरू होने का समय, विज्ञापन नीलामी वर्कलेट में चुना जाता है.

ब्रेकपॉइंट ट्रिगर होने पर, वर्कलेट स्क्रिप्ट के टॉप-लेवल पर मौजूद पहले स्टेटमेंट से पहले, प्रोसेस को रोक दिया जाता है. बिडिंग/स्कोरिंग/रिपोर्टिंग फ़ंक्शन पर जाने के लिए, रेगुलर ब्रेकपॉइंट या चरण निर्देशों का इस्तेमाल किया जा सकता है.

लाइव वर्कलेट स्क्रिप्ट, थ्रेड पैनल में भी दिखेंगी.

Chrome Canary में DevTools का स्क्रीनशॉट, जिसमें सोर्स पैनल में थ्रेड पैनल को हाइलाइट किया गया है. साथ ही, इसमें मौजूदा वर्कलेट स्क्रिप्ट को दिखाया गया है, जिसे रोका गया है.

कुछ वर्कलेट एक साथ चल सकते हैं. इसलिए, कई थ्रेड "रोके गए" स्टेटस में हो सकते हैं. थ्रेड के बीच स्विच करने के लिए, थ्रेड की सूची का इस्तेमाल किया जा सकता है. साथ ही, ज़रूरत के हिसाब से उन्हें फिर से शुरू किया जा सकता है या उनकी बारीकी से जांच की जा सकती है.

Protected Audience से जुड़े इवेंट देखना

Chrome DevTools के ऐप्लिकेशन पैनल में, Protected Audience के इंटरेस्ट ग्रुप और नीलामी के इवेंट देखे जा सकते हैं.

अगर Protected Audience की सुविधा चालू किए गए ब्राउज़र में, Protected Audience की डेमो शॉपिंग साइट पर जाएं, तो DevTools में join इवेंट की जानकारी दिखेगी.

Chrome Canary में DevTools ऐप्लिकेशन पैनल, जिसमें Protected Audience के इंटरेस्ट ग्रुप में शामिल होने वाले इवेंट के बारे में जानकारी दिख रही है.

अब, अगर Protected Audience की सुविधा चालू किए गए ब्राउज़र में, Protected Audience की डेमो पब्लिशर साइट पर जाएं, तो DevTools में bid और win इवेंट की जानकारी दिखेगी.

Chrome Canary में,
   डेवलपर टूल का ऐप्लिकेशन पैनल, जिसमें सुरक्षित ऑडियंस की नीलामी बिड और जीतने वाले इवेंट की जानकारी दिख रही है.

Protected Audience API कैसे काम करता है?

इस उदाहरण में, कोई उपयोगकर्ता कस्टम साइकल बनाने वाली कंपनी की वेबसाइट ब्राउज़ करता है. इसके बाद, वह किसी समाचार वेबसाइट पर जाता है और उसे साइकल बनाने वाली कंपनी की नई साइकल का विज्ञापन दिखता है.

1. कोई उपयोगकर्ता, विज्ञापन देने वाले व्यक्ति या कंपनी की साइट पर जाता है

इलस्ट्रेशन में दिखाया गया है कि एक व्यक्ति अपने लैपटॉप पर ब्राउज़र में, कस्टम साइकल बनाने वाली कंपनी की साइट पर जा रहा है.

मान लें कि कोई उपयोगकर्ता, कस्टम साइकल बनाने वाली किसी कंपनी (इस उदाहरण में विज्ञापन देने वाला) की वेबसाइट पर जाता है और हाथ से बनी स्टील साइकल के प्रॉडक्ट पेज पर कुछ समय बिताता है. इससे, साइकल बनाने वाली कंपनी को रीमार्केटिंग का मौका मिलता है.

2. उपयोगकर्ता के ब्राउज़र से इंटरेस्ट ग्रुप जोड़ने के लिए कहा जाता है

इलस्ट्रेशन में, एक व्यक्ति को अपने लैपटॉप पर ब्राउज़र में कोई साइट देखते हुए दिखाया गया है. ब्राउज़र में JavaScript
  कोड joinAdInterestGroup() चल रहा है.

एक्सप्लेनर सेक्शन: ब्राउज़र, एक जैसी दिलचस्पी वाले ग्रुप रिकॉर्ड करते हैं

विज्ञापन देने वाले का मांग पक्ष प्लैटफ़ॉर्म (डीएसपी) या विज्ञापन देने वाला खुद, navigator.joinAdInterestGroup() को कॉल करता है. इससे ब्राउज़र को उन ग्रुप की सूची में इंटरेस्ट ग्रुप जोड़ने के लिए कहा जाता है जिनका सदस्य ब्राउज़र है. इस उदाहरण में, ग्रुप का नाम custom-bikes है और उसका मालिक dsp.example है. चौथे चरण में बताई गई विज्ञापन नीलामी में, दिलचस्पी के ग्रुप का मालिक (इस मामले में, डीएसपी) खरीदार होगा. ब्राउज़र, उपयोगकर्ता के डिवाइस पर दिलचस्पी के हिसाब से बनाए गए ग्रुप की सदस्यता सेव करता है. इसे ब्राउज़र वेंडर या किसी और के साथ शेयर नहीं किया जाता.

joinAdInterestGroup() को इनकी अनुमति चाहिए:

  • जिस साइट पर विज़िट किया जा रहा है
  • एक जैसी दिलचस्पी वाले ग्रुप का मालिक

उदाहरण के लिए: malicious.example को dsp.example की अनुमति के बिना, dsp.example के मालिकाना हक वाले joinAdInterestGroup() को कॉल करने की अनुमति नहीं होनी चाहिए.

जिस साइट पर विज़िट किया जा रहा है उससे अनुमति पाना

एक ही ऑरिजिन: डिफ़ॉल्ट रूप से, joinAdInterestGroup() कॉल के लिए अनुमति, उसी ऑरिजिन से दी जाती है जिससे साइट देखी जा रही है. इसका मतलब है कि मौजूदा पेज के टॉप-लेवल फ़्रेम से ही अनुमति दी जाती है. साइटें, joinAdInterestGroup() कॉल बंद करने के लिए, Protected Audience अनुमतियों की नीति के हेडर join-ad-interest-group डायरेक्टिव का इस्तेमाल कर सकती हैं.

क्रॉस ऑरिजिन: मौजूदा पेज से अलग ऑरिजिन से joinAdInterestGroup() को कॉल करने पर, सिर्फ़ तब सफलता मिलती है, जब विज़िट की जा रही साइट ने अनुमतियों की ऐसी नीति सेट की हो जो क्रॉस-ऑरिजिन iframes से joinAdInterestGroup() को कॉल करने की अनुमति देती हो.

इंटरेस्ट ग्रुप के मालिक से अनुमति लेना

इंटरेस्ट ग्रुप के मालिक की अनुमति, joinAdInterestGroup() को उसी ऑरिजिन वाले iframe से कॉल करके दी जाती है जो इंटरेस्ट ग्रुप के मालिक का है. उदाहरण के लिए, dsp.example का मालिकाना हक रखने वाले इंटरेस्ट ग्रुप के लिए, dsp.example इफ़्रेम joinAdInterestGroup() को कॉल कर सकता है.

हमारा सुझाव है कि joinAdInterestGroup() को मालिक के डोमेन में किसी पेज या iframe में चलाया जा सकता है. इसके अलावा, .well-known यूआरएल पर मौजूद सूची का इस्तेमाल करके, इसे अन्य डोमेन को भी सौंपा जा सकता है.

navigator.joinAdInterestGroup() का इस्तेमाल करना

एपीआई का इस्तेमाल कैसे किया जा सकता है, इसका उदाहरण यहां दिया गया है:

const interestGroup = {
  owner: 'https://dsp.example',
  name: 'custom-bikes',
  biddingLogicUrl: ...,
  biddingWasmHelperUrl: ...,
  dailyUpdateUrl: ...,
  trustedBiddingSignalsUrl: ...,
  trustedBiddingSignalsKeys: ['key1', 'key2'],
  userBiddingSignals: {...},
  ads: [bikeAd1, bikeAd2, bikeAd3],
  adComponents: [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2],
};

navigator.joinAdInterestGroup(interestGroup, 7 * kSecsPerDay);

फ़ंक्शन में पास किए गए interestGroup ऑब्जेक्ट का साइज़ 50 केबी से ज़्यादा नहीं होना चाहिए. ऐसा न होने पर, कॉल पूरा नहीं होगा. दूसरा पैरामीटर, इंटरेस्ट ग्रुप की अवधि बताता है. यह अवधि 30 दिन से ज़्यादा नहीं हो सकती. एक के बाद एक किए गए कॉल, पहले से सेव की गई वैल्यू को ओवरराइट कर देते हैं.

एक जैसी दिलचस्पी वाले ग्रुप की प्रॉपर्टी

प्रॉपर्टी ज़रूरी है उदाहरण भूमिका
owner ज़रूरी है 'https://dsp.example' एक जैसी दिलचस्पी वाले ग्रुप के मालिक का ऑरिजिन.
name ज़रूरी है 'custom-bikes' इंटरेस्ट ग्रुप का नाम.
biddingLogicUrl** ज़रूरी नहीं है* 'https://dsp.example/bid/custom-bikes/bid.js' वर्कलेट में चलने वाले बिडिंग JavaScript के लिए यूआरएल.
biddingWasmHelperUrl** ज़रूरी नहीं है* 'https://dsp.example/bid/custom-bikes/bid.wasm' biddingLogicUrl से चलाए जा रहे WebAssembly कोड का यूआरएल.
dailyUpdateUrl** वैकल्पिक 'https://dsp.example/bid/custom-bikes/update' यूआरएल, जो दिलचस्पी के ग्रुप के एट्रिब्यूट अपडेट करने के लिए JSON दिखाता है. (दिलचस्पी के ग्रुप को अपडेट करना देखें.)
trustedBiddingSignalsUrl** वैकल्पिक 'https://dsp.example/trusted/bidding-signals' बिडर के भरोसेमंद सर्वर को भेजे जाने वाले, कुंजी-वैल्यू अनुरोधों के लिए बेस यूआरएल.
trustedBiddingSignalsKeys वैकल्पिक ['key1', 'key2' ...] भरोसेमंद की-वैल्यू सर्वर को किए जाने वाले अनुरोधों के लिए कुंजियां.
userBiddingSignals वैकल्पिक {...} अतिरिक्त मेटाडेटा, जिसका इस्तेमाल मालिक बिडिंग के दौरान कर सकता है.
ads ज़रूरी नहीं है* [bikeAd1, bikeAd2, bikeAd3] इस दिलचस्पी के ग्रुप के लिए रेंडर किए जा सकने वाले विज्ञापन.
adComponents वैकल्पिक [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2] एक से ज़्यादा हिस्सों से बने विज्ञापनों के लिए कॉम्पोनेंट.

* owner और name को छोड़कर, सभी प्रॉपर्टी वैकल्पिक हैं. biddingLogicUrl और ads प्रॉपर्टी की वैल्यू देना ज़रूरी नहीं है. हालांकि, नीलामी में हिस्सा लेने के लिए, इन प्रॉपर्टी की वैल्यू देना ज़रूरी है. इन प्रॉपर्टी के बिना, दिलचस्पी के ग्रुप बनाने के लिए इस्तेमाल के उदाहरण हो सकते हैं: उदाहरण के लिए, दिलचस्पी के ग्रुप का मालिक, किसी ऐसे कैंपेन के लिए दिलचस्पी के ग्रुप में ब्राउज़र जोड़ना चाह सकता है जो अभी नहीं चल रहा है या आने वाले समय में किसी और काम के लिए, या हो सकता है कि विज्ञापन के लिए उसका बजट कुछ समय के लिए खत्म हो गया हो.

** biddingLogicUrl, biddingWasmHelperUrl, dailyUpdateUrl, और trustedBiddingSignalsUrl यूआरएल का ऑरिजिन, मालिकाना हक वाले यूआरएल का ही होना चाहिए. ads और adComponents यूआरएल पर ऐसी कोई पाबंदी नहीं है.

दिलचस्पी के ग्रुप के एट्रिब्यूट अपडेट करना

dailyUpdateUrl, एक वेब सर्वर तय करता है जो navigator.joinAdInterestGroup() को पास किए गए इंटरेस्ट ग्रुप ऑब्जेक्ट के हिसाब से, इंटरेस्ट ग्रुप प्रॉपर्टी की जानकारी देने वाला JSON दिखाता है. इससे ग्रुप के मालिक को, समय-समय पर दिलचस्पी के ग्रुप के एट्रिब्यूट अपडेट करने का तरीका मिलता है. मौजूदा लागू करने के तरीके में, इन एट्रिब्यूट में बदलाव किया जा सकता है:

  • biddingLogicUrl
  • biddingWasmHelperUrl
  • trustedBiddingSignalsUrl
  • trustedBiddingSignalsKeys
  • ads
  • priority

JSON में बताए गए फ़ील्ड को ही अपडेट किया जाएगा. JSON में बताए गए फ़ील्ड के अलावा किसी भी फ़ील्ड को अपडेट नहीं किया जाएगा. वहीं, navigator.joinAdInterestGroup() को कॉल करने पर, एक जैसी पसंद के हिसाब से बनाए गए किसी भी मौजूदा ग्रुप को बदल दिया जाता है.

अपडेट करने की पूरी कोशिश की जाती है. हालांकि, ये अपडेट इन स्थितियों में काम नहीं कर सकते:

  • नेटवर्क अनुरोध के टाइम आउट की अवधि (फ़िलहाल 30 सेकंड).
  • नेटवर्क से जुड़ी कोई अन्य गड़बड़ी.
  • JSON को पार्स नहीं किया जा सका.

अगर अपडेट करने में लगातार ज़्यादा समय लग रहा है, तो अपडेट रद्द किए जा सकते हैं. हालांकि, इससे रद्द किए गए (बचे हुए) अपडेट पर, दर को सीमित करने की कोई पाबंदी नहीं लगाई जाती. अपडेट की दर सीमित है. हर दिन ज़्यादा से ज़्यादा एक अपडेट किया जा सकता है. नेटवर्क की गड़बड़ियों की वजह से अपडेट न हो पाने पर, एक घंटे बाद फिर से कोशिश की जाती है. साथ ही, इंटरनेट से डिसकनेक्ट होने की वजह से अपडेट न हो पाने पर, इंटरनेट से कनेक्ट होने के तुरंत बाद फिर से कोशिश की जाती है.

मैन्‍युअल अपडेट

मौजूदा फ़्रेम के ऑरिजिन के मालिकाना हक वाले दिलचस्पी के ग्रुप में अपडेट, navigator.updateAdInterestGroups() के ज़रिए मैन्युअल तरीके से ट्रिगर किए जा सकते हैं. दर को सीमित करने से, अपडेट बार-बार होने से रोके जा सकते हैं: navigator.updateAdInterestGroups() को बार-बार कॉल करने से तब तक कोई कार्रवाई नहीं की जाती, जब तक कि दर सीमित करने की अवधि (फ़िलहाल एक दिन) बीत नहीं जाती. अगर navigator.joinAdInterestGroup() को एक ही इंटरेस्ट ग्रुप owner और name के लिए फिर से कॉल किया जाता है, तो दर की सीमा रीसेट हो जाती है.

अपने-आप होने वाले अपडेट

नीलामी पूरी होने के बाद, नीलामी के लिए लोड किए गए सभी इंटरेस्ट ग्रुप अपने-आप अपडेट हो जाते हैं. हालांकि, ये अपडेट मैन्युअल अपडेट की तरह ही तय दरों पर ही किए जाते हैं. नीलामी में हिस्सा लेने वाले कम से कम एक दिलचस्पी वाले ग्रुप वाले हर मालिक के लिए, ऐसा लगता है कि navigator.updateAdInterestGroups() को ऐसे iframe से कॉल किया गया है जिसका ऑरिजिन उस मालिक से मेल खाता है.

किसी इंटरेस्ट ग्रुप के लिए विज्ञापन तय करना

ads और adComponents ऑब्जेक्ट में, विज्ञापन क्रिएटिव का यूआरएल और ज़रूरत के हिसाब से, मनमुताबिक मेटाडेटा शामिल होता है. इसका इस्तेमाल बिडिंग के समय किया जा सकता है. उदाहरण के लिए:

{
  renderUrl: 'https://cdn.example/.../bikeAd1.html',
  metadata: bikeAd1metadata // optional
}

खरीदार बिड कैसे लगाते हैं?

किसी इंटरेस्ट ग्रुप के मालिक की ओर से दी गई biddingLogicUrl स्क्रिप्ट में, generateBid() फ़ंक्शन शामिल होना चाहिए. जब विज्ञापन स्पेस बेचने वाला कोई व्यक्ति navigator.runAdAuction() को कॉल करता है, तो generatedBid() फ़ंक्शन को हर उस इंटरेस्ट ग्रुप के लिए एक बार कॉल किया जाता है जिसका सदस्य ब्राउज़र है. ऐसा तब किया जाता है, जब इंटरेस्ट ग्रुप के मालिक को बिड करने का न्योता दिया गया हो. दूसरे शब्दों में, हर कैंडिडेट विज्ञापन के लिए generateBid() को एक बार कॉल किया जाता है. सेलर, navigator.runAdAuction() को पास किए गए नीलामी कॉन्फ़िगरेशन पैरामीटर पर decisionLogicUrl प्रॉपर्टी उपलब्ध कराता है. इस यूआरएल के कोड में scoreAd() फ़ंक्शन शामिल होना चाहिए. यह फ़ंक्शन, generateBid() से मिली हर बिड को स्कोर करने के लिए, नीलामी में हिस्सा लेने वाले हर बिडर के लिए चलाया जाता है.

विज्ञापन-स्पेस खरीदार की ओर से दी गई biddingLogicUrl स्क्रिप्ट में, generateBid() फ़ंक्शन शामिल होना चाहिए. इस फ़ंक्शन को हर विज्ञापन के लिए एक बार कॉल किया जाता है. runAdAuction() हर विज्ञापन की जांच करता है. साथ ही, उससे जुड़ी बिड और मेटाडेटा की भी जांच करता है. इसके बाद, विज्ञापन को संख्या के हिसाब से, डिज़ायरेबिलिटी स्कोर असाइन करता है.

generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  ...
  return {
    ad: adObject,
    bid: bidValue,
    render: renderUrl,
    adComponents: [adComponentRenderUrl1, ...]
   };
}

generateBid() में ये आर्ग्युमेंट इस्तेमाल किए जाते हैं:

  • interestGroup
    विज्ञापन खरीदार ने joinAdInterestGroup() को जो ऑब्जेक्ट पास किया है. (दिलचस्पी के हिसाब से ग्रुप को dailyUpdateUrl की मदद से अपडेट किया जा सकता है.)

  • auctionSignals
    विज्ञापन-स्पेस सेलर की ओर से navigator.runAdAuction() को पास की गई, नीलामी कॉन्फ़िगरेशन आर्ग्युमेंट की प्रॉपर्टी. इससे पेज के कॉन्टेक्स्ट (जैसे, विज्ञापन का साइज़ और पब्लिशर आईडी), नीलामी के टाइप (फ़र्स्ट-प्राइस या सेकंड-प्राइस) और अन्य मेटाडेटा के बारे में जानकारी मिलती है.

  • perBuyerSignals
    auctionSignals की तरह ही, नीलामी कॉन्फ़िगरेशन के आर्ग्युमेंट की एक प्रॉपर्टी, जिसे सेलर ने navigator.runAdAuction() को पास किया है. अगर सेलर कोई SSP है, जो खरीदार के सर्वर पर रीयल-टाइम बिडिंग कॉल करता है और जवाब को वापस भेजता है या पब्लिशर पेज, खरीदार के सर्वर से सीधे संपर्क करता है, तो इससे पेज के बारे में खरीदार के सर्वर से संदर्भ के हिसाब से सिग्नल मिल सकते हैं. अगर ऐसा है, तो खरीदार को generateBid() में उन सिग्नल का क्रिप्टोग्राफ़िक हस्ताक्षर देखना पड़ सकता है, ताकि छेड़छाड़ से बचा जा सके.

  • trustedBiddingSignals
    ऐसा ऑब्जेक्ट जिसकी कुंजियां, दिलचस्पी के ग्रुप के लिए trustedBiddingSignalsKeys होती हैं और जिसकी वैल्यू, trustedBiddingSignals अनुरोध में दी जाती हैं.

  • browserSignals
    ब्राउज़र से बनाया गया ऑब्जेक्ट, जिसमें पेज के कॉन्टेक्स्ट (जैसे, मौजूदा पेज का hostname, जिसे सेलर नकली बना सकता है) और इंटरेस्ट ग्रुप के डेटा (जैसे, डिवाइस पर फ़्रीक्वेंसी कैपिंग की अनुमति देने के लिए, ग्रुप ने पिछली बार नीलामी कब जीती थी) की जानकारी शामिल हो सकती है.

browserSignals ऑब्जेक्ट में ये प्रॉपर्टी होती हैं:

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  joinCount: 3,
  bidCount: 17,
  prevWins: [[time1,ad1],[time2,ad2],...],
  wasmHelper: ... /* WebAssembly.Module object based on interest group's biddingWasmHelperUrl. */
  dataVersion: 1, /* Data-Version value from the buyer's Key/Value service response(s). */
}

bid वैल्यू का हिसाब लगाने के लिए, generateBid() में मौजूद कोड, फ़ंक्शन के पैरामीटर की प्रॉपर्टी का इस्तेमाल कर सकता है. उदाहरण के लिए:

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
    ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    ...
  }
}

generateBid() चार प्रॉपर्टी वाला एक ऑब्जेक्ट दिखाता है:

  • ad
    विज्ञापन के बारे में मनमुताबिक मेटाडेटा, जैसे कि वह जानकारी जिसे सेलर को इस बिड या विज्ञापन क्रिएटिव के बारे में जानना है. सेलर](/resources/glossary#ssp) इस जानकारी का इस्तेमाल अपनी नीलामी और विज्ञापन क्रिएटिव के फ़ैसले में करता है. सेलर, नीलामी और फ़ैसले के लॉजिक में इस जानकारी का इस्तेमाल करता है.

  • bid
    अंकों वाली बिड, जो नीलामी में शामिल होगी. सेलर के पास अलग-अलग खरीदारों की बिड की तुलना करने की सुविधा होनी चाहिए.इसलिए, बिड को सेलर की चुनी गई इकाई में होना चाहिए. जैसे, "हर हज़ार के लिए डॉलर". अगर बिड शून्य या नेगेटिव है, तो यह दिलचस्पी वाला ग्रुप बिल्कुल भी सेलर की नीलामी में हिस्सा नहीं लेगा. इस तरीके की मदद से, खरीदार विज्ञापन देने वाले के लिए कोई भी नियम लागू कर सकता है. जैसे, विज्ञापन कहां दिख सकते हैं और कहां नहीं.

  • render
    यह एक यूआरएल या यूआरएल की सूची होती है. अगर यह बिड नीलामी जीतती है, तो इसका इस्तेमाल क्रिएटिव को रेंडर करने के लिए किया जाएगा. (एपीआई के बारे में जानकारी देने वाले लेख में, एक से ज़्यादा हिस्सों से बने विज्ञापन देखें.) वैल्यू, दिलचस्पी के ग्रुप के लिए तय किए गए विज्ञापनों में से किसी एक के renderUrl से मेल खानी चाहिए.

  • adComponents
    एक से ज़्यादा हिस्सों वाले विज्ञापनों के लिए, ज़्यादा से ज़्यादा 20 कॉम्पोनेंट की वैकल्पिक सूची. यह सूची, navigator.joinAdInterestGroup() में पास किए गए दिलचस्पी के ग्रुप आर्ग्युमेंट की adComponents प्रॉपर्टी से ली जाती है.

किसी ब्राउज़र को, रुचि के हिसाब से बनाए गए ग्रुप को छोड़ने के लिए कहना

इंटरेस्ट ग्रुप का मालिक, किसी ब्राउज़र को इंटरेस्ट ग्रुप से हटाने का अनुरोध कर सकता है. दूसरे शब्दों में, ब्राउज़र से कहा जाता है कि वह अपनी सदस्यता वाले ग्रुप की सूची से, अपनी दिलचस्पी के हिसाब से बनाए गए ग्रुप को हटा दे.

navigator.leaveAdInterestGroup({
  owner: 'https://dsp.example',
  name: 'custom-bikes'
});

अगर कोई उपयोगकर्ता उस साइट पर वापस आता है जिसने ब्राउज़र से इंटरेस्ट ग्रुप जोड़ने के लिए कहा था, तो इंटरेस्ट ग्रुप का मालिक, ब्राउज़र से इंटरेस्ट ग्रुप हटाने का अनुरोध करने के लिए navigator.leaveAdInterestGroup() फ़ंक्शन को कॉल कर सकता है. किसी विज्ञापन का कोड, अपने इंटरेस्ट ग्रुप के लिए भी इस फ़ंक्शन को कॉल कर सकता है.

3. उपयोगकर्ता, विज्ञापन स्पेस बेचने वाली किसी साइट पर जाता है

इलस्ट्रेशन में, एक व्यक्ति को अपने लैपटॉप पर ब्राउज़र में खबरों की वेबसाइट पर जाते हुए दिखाया गया है. साइट पर
  विज्ञापन स्लॉट खाली है.

इसके बाद, उपयोगकर्ता विज्ञापन स्पेस बेचने वाली किसी साइट पर जाता है. इस उदाहरण में, यह एक समाचार वेबसाइट है. साइट पर विज्ञापन इन्वेंट्री है, जिसे वह रीयल-टाइम बिडिंग का इस्तेमाल करके, प्रोग्राम के हिसाब से बेचती है.

4. ब्राउज़र में विज्ञापन नीलामी की जाती है

इलस्ट्रेशन में एक व्यक्ति को अपने लैपटॉप पर ब्राउज़र में खबरों की वेबसाइट देखते हुए दिखाया गया है. Protected Audience API का इस्तेमाल करके विज्ञापन की नीलामी की जा रही है.

एक्सप्लेनर सेक्शन: सेलर, डिवाइस पर ऑक्शन चलाते हैं

विज्ञापन नीलामी, पब्लिशर के SSP या खुद पब्लिशर चला सकता है. नीलामी का मकसद, मौजूदा पेज पर उपलब्ध एक विज्ञापन स्लॉट के लिए सबसे सही विज्ञापन चुनना है. नीलामी में, विज्ञापन स्पेस के खरीदारों और की/वैल्यू सेवाओं से जुड़े सेलर के डेटा के साथ-साथ, उन इंटरेस्ट ग्रुप का भी डेटा शामिल होता है जिनका सदस्य ब्राउज़र है.

विज्ञापन-स्पेस का सेलर, उपयोगकर्ता के ब्राउज़र से विज्ञापन नीलामी शुरू करने के लिए अनुरोध करता है. इसके लिए, वह navigator.runAdAuction() को कॉल करता है.

उदाहरण के लिए:

const auctionConfig = {
  seller: 'https://ssp.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://dsp.example', 'https://buyer2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://dsp.example': {...},
    'https://another-buyer.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://dsp.example': 50,
    'https://another-buyer.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://some-other-ssp.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ]
};

const auctionResultPromise = navigator.runAdAuction(auctionConfig);

runAdAuction() एक प्रॉमिस दिखाता है, जो URN (urn:uuid:<something>) में बदल जाता है. यह यूआरएन, विज्ञापन नीलामी के नतीजे को दिखाता है. ब्राउज़र इसे सिर्फ़ तब डिकोड कर सकता है, जब इसे रेंडर करने के लिए फ़ेंस किए गए फ़्रेम में पास किया जाए: पब्लिशर पेज, विज्ञापन के नतीजे की जांच नहीं कर सकता.

decisionLogicUrl स्क्रिप्ट, हर विज्ञापन के साथ-साथ उससे जुड़ी बिड और मेटाडेटा को एक बार में एक करके देखती है. इसके बाद, उसे संख्या के हिसाब से एक स्कोर असाइन करती है.

auctionConfig प्रॉपर्टी

प्रॉपर्टी ज़रूरी है उदाहरण भूमिका
seller ज़रूरी है 'https://ssp.example' सेलर का देश.
decisionLogicUrl ज़रूरी है 'https://ssp.example/auction-decision-logic.js' नीलामी वर्कलेट JavaScript के लिए यूआरएल.
trustedScoringSignalsUrl वैकल्पिक 'https://ssp.example/scoring-signals' सेलर के भरोसेमंद सर्वर का यूआरएल.
interestGroupBuyers* ज़रूरी है ['https://dsp.example', 'https://buyer2.example', ...] नीलामी में बिड करने के लिए कहा गया, एक जैसी पसंद के हिसाब से बनाए गए ग्रुप के सभी मालिकों की ऑरिजिन.
auctionSignals वैकल्पिक {...} पेज के कॉन्टेक्स्ट, नीलामी के टाइप वगैरह के बारे में सेलर की जानकारी.
sellerSignals वैकल्पिक {...} पब्लिशर की सेटिंग, संदर्भ के हिसाब से विज्ञापन अनुरोध करने वगैरह के आधार पर जानकारी.
sellerTimeout वैकल्पिक 100 सेलर की scoreAd() स्क्रिप्ट का ज़्यादा से ज़्यादा रनटाइम (मिलीसेकंड).
perBuyerSignals वैकल्पिक {'https://dsp.example': {...},
  'https://another-buyer.example': {...},
...}
हर खरीदार के सर्वर से, पेज के बारे में संदर्भ के हिसाब से सिग्नल.
perBuyerTimeouts वैकल्पिक 50 किसी खरीदार की generateBid() स्क्रिप्ट का ज़्यादा से ज़्यादा रनटाइम (एमएस).
componentAuctions वैकल्पिक [{'seller': 'https://www.some-other-ssp.com',
  'decisionLogicUrl': ..., ...},
  ...]
कॉम्पोनेंट नीलामियों के लिए अन्य कॉन्फ़िगरेशन.

* सेलर, सभी इंटरेस्ट ग्रुप को बिड करने की अनुमति देने के लिए interestGroupBuyers: '*' डाल सकता है. इसके बाद, विज्ञापनों को स्वीकार या अस्वीकार किया जाता है. ऐसा, दिलचस्पी के ग्रुप के मालिक को शामिल करने के अलावा, अन्य शर्तों के आधार पर किया जाता है. उदाहरण के लिए, सेलर अपनी नीतियों का पालन हो रहा है या नहीं, यह पक्का करने के लिए विज्ञापन क्रिएटिव की समीक्षा कर सकता है.

** additionalBids, सुरक्षित ऑडियंस की मौजूदा सुविधा के साथ काम नहीं करता. ज़्यादा जानकारी के लिए, सुरक्षित ऑडियंस के बारे में जानकारी देने वाले लेख में, नीलामी में हिस्सा लेने वाले सेक्शन पढ़ें.

विज्ञापन कैसे चुने जाते हैं?

decisionLogicUrl (runAdAuction() को पास किए गए नीलामी कॉन्फ़िगरेशन ऑब्जेक्ट की प्रॉपर्टी) में मौजूद कोड में scoreAd() फ़ंक्शन शामिल होना चाहिए. यह हर विज्ञापन के लिए एक बार चलाया जाता है, ताकि यह पता लगाया जा सके कि विज्ञापन को पसंद किया जा रहा है या नहीं.

scoreAd(adMetadata, bid, auctionConfig, trustedScoringSignals, browserSignals) {
  ...
  return desirabilityScoreForThisAd;
}

scoreAd() में ये आर्ग्युमेंट इस्तेमाल किए जाते हैं:

  • adMetadata
    खरीदार का दिया गया मेटाडेटा.
  • bid
    बिड की संख्या वाली वैल्यू.
  • auctionConfig
    navigator.runAdAuction() को पास किया गया नीलामी कॉन्फ़िगरेशन ऑब्जेक्ट.
  • trustedScoringSignals
    बिडिंग के समय, सेलर के भरोसेमंद सर्वर से हासिल की गई वैल्यू, जो विज्ञापन के बारे में सेलर की राय दिखाती हैं.
  • browserSignals
    ब्राउज़र से बनाया गया ऑब्जेक्ट, जिसमें ऐसी जानकारी शामिल होती है जिसकी जानकारी ब्राउज़र के पास होती है और जिसकी पुष्टि सेलर की नीलामी स्क्रिप्ट करना चाहती है:
{
  topWindowHostname: 'publisher.example',
  interestGroupOwner: 'https://dsp.example',
  renderUrl: 'https://cdn.example/render',
  adComponents: ['https://cdn.com/ad-component-1', ...],
  biddingDurationMsec: 12,
  dataVersion: 1 /* Data-Version value from the seller's Key/Value service response. */
}

नीलामी शुरू होने से पहले, सेलर उपलब्ध विज्ञापन स्लॉट के लिए, कॉन्टेक्स्ट के हिसाब से सबसे अच्छा विज्ञापन ढूंढता है. scoreAd() लॉजिक का एक हिस्सा यह है कि वह ऐसे किसी भी विज्ञापन को अस्वीकार कर दे जो कॉन्टेक्स्ट के हिसाब से सबसे अच्छा विज्ञापन नहीं है.

5. सेलर और इसमें हिस्सा लेने वाले खरीदारों को, की/वैल्यू सेवा से रीयल-टाइम डेटा मिलता है

इलस्ट्रेशन में एक व्यक्ति को अपने लैपटॉप पर ब्राउज़र में खबरों की वेबसाइट देखते हुए दिखाया गया है. Protected Audience API का इस्तेमाल करके विज्ञापन नीलामी की जा रही है. इसमें, किसी व्यक्ति को की/वैल्यू सेवा से डेटा मिल रहा है.

एक्सप्लेनर सेक्शन: सुरक्षित ऑडियंस की की-वैल्यू सेवा से रीयल-टाइम डेटा फ़ेच करना.

विज्ञापन नीलामी के दौरान, विज्ञापन स्पेस का सेलर, किसी खास विज्ञापन क्रिएटिव के बारे में रीयल टाइम डेटा पा सकता है. इसके लिए, उसे की/वैल्यू सेवा से अनुरोध करना होगा. इसके लिए, navigator.runAdAuction() में पास किए गए नीलामी कॉन्फ़िगरेशन आर्ग्युमेंट की trustedScoringSignalsUrl प्रॉपर्टी का इस्तेमाल किया जाता है. साथ ही, नीलामी में मौजूद सभी इंटरेस्ट ग्रुप के ads और adComponents फ़ील्ड में मौजूद सभी एंट्री की renderUrl प्रॉपर्टी से मिले पासकोड का इस्तेमाल किया जाता है.

इसी तरह, विज्ञापन-स्पेस खरीदार, navigator.joinAdInterestGroup() को पास किए गए इंटरेस्ट ग्रुप आर्ग्युमेंट की trustedBiddingSignalsUrl और trustedBiddingSignalsKeys प्रॉपर्टी का इस्तेमाल करके, कुंजी/वैल्यू सेवा से रीयल टाइम डेटा का अनुरोध कर सकता है.

runAdAuction() को कॉल करने पर, ब्राउज़र हर विज्ञापन खरीदार के भरोसेमंद सर्वर से अनुरोध करता है. अनुरोध का यूआरएल कुछ ऐसा दिख सकता है:

https://kv-service.example/getvalues?hostname=publisher.example&keys=key1,key2
  • बेस यूआरएल, trustedBiddingSignalsUrl से आता है.
  • hostname, ब्राउज़र से मिलता है.
  • keys की वैल्यू, trustedBiddingSignalsKeys से ली जाती है.

इस अनुरोध का जवाब, एक JSON ऑब्जेक्ट होता है, जिसमें हर कुंजी की वैल्यू होती है.

6. विज्ञापन दिखाने के लिए चुना गया विज्ञापन दिखाया जाता है

इलस्ट्रेशन में एक व्यक्ति को अपने लैपटॉप पर ब्राउज़र में खबरों की वेबसाइट देखते हुए दिखाया गया है. साइकल (20% की छूट) का विज्ञापन दिखाया गया है. साथ ही, ऊपर एक लॉक भी दिख रहा है, ताकि यह पता चल सके कि विज्ञापन को फ़ेंस किए गए फ़्रेम में दिखाया गया है.

एक्सप्लेनर सेक्शन: ब्राउज़र, विज्ञापनों में से सबसे अच्छा विज्ञापन रेंडर करते हैं

जैसा कि पहले बताया गया है: runAdAuction() से मिलने वाला प्रॉमिस, URN पर रिज़ॉल्व होता है. इसे रेंडर करने के लिए, फ़ेंस किए गए फ़्रेम में पास किया जाता है. इसके बाद, साइट पर विज्ञापन दिखता है.

7. नीलामी के नतीजे की शिकायत की जाती है

एक्सप्लेनर सेक्शन: इवेंट-लेवल रिपोर्टिंग (फ़िलहाल)

सेलर की रिपोर्ट का नतीजा

एक्सप्लेनर सेक्शन: रेंडर के बारे में सेलर रिपोर्टिंग

decisionLogicUrl पर दिया गया सेलर का JavaScript (जिसमें scoreAd() भी दिया गया है), नीलामी के नतीजे की रिपोर्ट करने के लिए reportResult() फ़ंक्शन शामिल कर सकता है.

reportResult(auctionConfig, browserSignals) {
  ...
  return signalsForWinner;
}

इस फ़ंक्शन में ये आर्ग्युमेंट इस्तेमाल किए जाते हैं:

  • auctionConfig
    navigator.runAdAuction() को पास किया गया नीलामी कॉन्फ़िगरेशन ऑब्जेक्ट.

  • browserSignals
    ब्राउज़र से बनाया गया ऑब्जेक्ट, जो नीलामी के बारे में जानकारी देता है. उदाहरण के लिए:

    {
      'topWindowHostname': 'publisher.example',
      'interestGroupOwner': 'https://dsp.example',
      'renderUrl': 'https://cdn.example/url-of-winning-creative.wbn',
      'bid:' <bidValue>,
      'desirability': <winningAdScore>
    }
    

इस फ़ंक्शन की रिटर्न वैल्यू का इस्तेमाल, बिड जीतने वाले व्यक्ति के reportWin() फ़ंक्शन के लिए sellerSignals आर्ग्युमेंट के तौर पर किया जाता है.

बिड जीतने वाले की रिपोर्ट का नतीजा

एक्सप्लेनर सेक्शन: रेंडर और विज्ञापन इवेंट पर खरीदार रिपोर्टिंग

नीलामी में जीतने वाले बिडर के JavaScript (जिसने generateBid() भी दिया है) में, नीलामी के नतीजे की जानकारी देने के लिए reportWin() फ़ंक्शन शामिल किया जा सकता है.

reportWin(auctionSignals, perBuyerSignals, sellerSignals, browserSignals) {
  ...
}

इस फ़ंक्शन में ये आर्ग्युमेंट इस्तेमाल किए जाते हैं:

  • auctionSignals और perBuyerSignals
    बिड जीतने वाले के लिए, generateBid() में भेजी गई वैल्यू एक जैसी होती हैं.
  • sellerSignals
    reportResult() की रिटर्न वैल्यू, जिससे सेलर को खरीदार को जानकारी देने का मौका मिलता है.
  • browserSignals
    नीलामी के बारे में जानकारी देने वाला, ब्राउज़र से बनाया गया ऑब्जेक्ट. उदाहरण के लिए:

    {
      'topWindowHostname': 'publisher.example',
      'seller': 'https://ssp.example',
      'interestGroupOwner': 'https://dsp.example',
      'interestGroupName': 'custom-bikes',
      'renderUrl': 'https://cdn.example/winning-creative.wbn',
      'bid:' <bidValue>
    }
    

कुछ समय के लिए नुकसान/लाभ की रिपोर्टिंग लागू करना

Chrome में नीलामी की रिपोर्टिंग के लिए, फ़िलहाल दो तरीके उपलब्ध हैं:

  • forDebuggingOnly.reportAdAuctionLoss()
  • forDebuggingOnly.reportAdAuctionWin()

इनमें से हर तरीके में एक आर्ग्युमेंट होता है: नीलामी पूरी होने के बाद फ़ेच करने के लिए यूआरएल. इन्हें scoreAd() और generateBid(), दोनों में अलग-अलग यूआरएल आर्ग्युमेंट के साथ कई बार कॉल किया जा सकता है.

Chrome, लॉस/विन डीबग रिपोर्ट सिर्फ़ तब भेजता है, जब नीलामी पूरी हो जाती है. अगर कोई नीलामी रद्द की जाती है (उदाहरण के लिए, नए नेविगेशन की वजह से), तो कोई रिपोर्ट जनरेट नहीं होगी.

ये तरीके, Chrome में डिफ़ॉल्ट रूप से उपलब्ध होते हैं. तरीकों की जांच करने के लिए, chrome://settings/adPrivacy में जाकर, विज्ञापन निजता से जुड़े सभी एपीआई चालू करें. अगर Protected Audience को चालू करने के लिए, Chrome को कमांड लाइन फ़्लैग के साथ चलाया जा रहा है, तो आपको BiddingAndScoringDebugReportingAPI फ़्लैग को शामिल करके, तरीकों को साफ़ तौर पर चालू करना होगा. अगर फ़्लैग चालू नहीं है, तो पैसे चुकाने के तरीके अब भी उपलब्ध रहेंगे, लेकिन इनका इस्तेमाल नहीं किया जा सकेगा.

8. विज्ञापन पर क्लिक होने की रिपोर्ट की जाती है

इलस्ट्रेशन में एक व्यक्ति को दिखाया गया है, जो समाचार वेबसाइट पर फ़ेंस किए गए फ़्रेम में, बाइक के विज्ञापन पर क्लिक कर रहा है. साथ ही, सेलर और खरीदारों को भेजे जाने वाले रिपोर्ट डेटा को भी दिखाया गया है.

फ़ेंस किए गए फ़्रेम में रेंडर किए गए विज्ञापन पर मिले क्लिक की रिपोर्ट की जाती है. इस सुविधा के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, फ़ेंस किए गए फ़्रेम वाले विज्ञापनों की रिपोर्टिंग देखें.



यहां दिए गए डायग्राम में, Protected Audience विज्ञापन नीलामी के हर चरण के बारे में बताया गया है:

Protected Audience API से जुड़ी विज्ञापन नीलामी के हर चरण की खास जानकारी देने वाला इलस्ट्रेशन


Protected Audience और TURTLEDOVE में क्या अंतर है?

Protected Audience, TURTLEDOVE फ़ैमिली के प्रस्तावों में से पहला ऐसा प्रयोग है जिसे Chromium में लागू किया जा रहा है.

Protected Audience, TURTLEDOVE के हाई-लेवल के सिद्धांतों का पालन करता है. कुछ ऑनलाइन विज्ञापन, संभावित रूप से दिलचस्पी रखने वाले ऐसे व्यक्ति को दिखाए जाते हैं जिसने पहले विज्ञापन देने वाले व्यक्ति या विज्ञापन नेटवर्क के साथ इंटरैक्ट किया हो. अब तक, विज्ञापन देने वाला व्यक्ति या कंपनी, किसी व्यक्ति को वेब पर ब्राउज़ करते समय पहचानती थी. यह आज के वेब पर निजता से जुड़ी मुख्य समस्या है.

TURTLEDOVE का मकसद, इस इस्तेमाल के उदाहरण को हल करने के लिए एक नया एपीआई उपलब्ध कराना है. साथ ही, निजता से जुड़ी कुछ अहम सुविधाएं भी उपलब्ध कराना है:

  • विज्ञापन देने वाले के हिसाब से, किसी व्यक्ति की दिलचस्पी किस चीज़ में है, इस बारे में जानकारी ब्राउज़र के पास होती है, न कि विज्ञापन देने वाले के पास.
  • विज्ञापन देने वाली कंपनियां, किसी व्यक्ति की दिलचस्पी के आधार पर विज्ञापन दिखा सकती हैं. हालांकि, वे उस दिलचस्पी को किसी व्यक्ति के बारे में अन्य जानकारी के साथ नहीं जोड़ सकतीं. खास तौर पर, वे यह नहीं बता सकतीं कि वह व्यक्ति कौन है या वह किस पेज पर जा रहा है.

Protected Audience, TURTLEDOVE और उससे जुड़े बदलावों के प्रपोज़ल से तैयार हुआ है. इन बदलावों को एपीआई का इस्तेमाल करने वाले डेवलपर को बेहतर सेवा देने के लिए किया गया है:

  • SPARROW में: Criteo ने ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (टीईई) में चलने वाले ("गेटकीपर") सेवा मॉडल को जोड़ने का सुझाव दिया. सुरक्षित ऑडियंस में, रीयल-टाइम डेटा लुकअप और एग्रीगेट की गई रिपोर्टिंग के लिए, टीईई का ज़्यादा सीमित इस्तेमाल किया जाता है.
  • NextRoll के TERN और Magnite के PARRROT के प्रस्तावों में, डिवाइस पर होने वाली नीलामी में खरीदारों और सेलर की अलग-अलग भूमिकाओं के बारे में बताया गया है. Protected Audience की विज्ञापन बिडिंग/स्कोरिंग प्रोसेस, इस काम पर आधारित है.
  • RTB House के नतीजे के आधार पर और प्रॉडक्ट-लेवल पर किए गए TURTLEDOVE के बदलावों से, उपयोगकर्ता के डिवाइस पर होने वाली नीलामी के लिए, उपयोगकर्ता की पहचान ज़ाहिर न करने वाले मॉडल और अनुभव को उपयोगकर्ता के हिसाब से बनाने की सुविधाओं को बेहतर बनाया गया है
  • PARAKEET, Microsoft का ऐसा प्रस्ताव है जो TURTLEDOVE जैसी विज्ञापन सेवा के लिए है. यह ब्राउज़र और विज्ञापन टेक्नोलॉजी की सेवा देने वाली कंपनियों के बीच, टीईई में चल रहे प्रॉक्सी सर्वर पर निर्भर करता है. इससे विज्ञापन अनुरोधों को गुप्त रखा जा सकता है और निजता से जुड़ी प्रॉपर्टी लागू की जा सकती हैं. Protected Audience ने इस प्रॉक्सी मॉडल को अपनाया नहीं है. हम PARAKEET और Protected Audience के लिए JavaScript API को अलाइन कर रहे हैं. इससे, आने वाले समय में दोनों प्रस्तावों की सबसे अच्छी सुविधाओं को जोड़ने में मदद मिलेगी.

सुरक्षित ऑडियंस की सुविधा, किसी वेबसाइट के विज्ञापन नेटवर्क को यह जानने से नहीं रोकती कि कोई व्यक्ति कौनसे विज्ञापन देखता है. हमें उम्मीद है कि समय के साथ, एपीआई को ज़्यादा निजी बनाने के लिए उसमें बदलाव किए जाएंगे.

ब्राउज़र का कौनसा कॉन्फ़िगरेशन उपलब्ध है?

उपयोगकर्ता, chrome://settings/adPrivacy में टॉप-लेवल की सेटिंग को चालू या बंद करके, Chrome में Privacy Sandbox के ट्रायल में अपनी भागीदारी में बदलाव कर सकते हैं. शुरुआती टेस्टिंग के दौरान, लोग सुरक्षित ऑडियंस से ऑप्ट आउट करने के लिए, प्राइवसी सैंडबॉक्स की इस बेहतर सेटिंग का इस्तेमाल कर पाएंगे. Chrome, उपयोगकर्ताओं को उन दिलचस्पी के ग्रुप की सूची देखने और उन्हें मैनेज करने की अनुमति देगा जिनमें उन्हें वेब पर विज़िट की गई साइटों पर जोड़ा गया है. Privacy Sandbox की टेक्नोलॉजी की तरह ही, उपयोगकर्ता सेटिंग भी उपयोगकर्ताओं, रेगुलेटर, और अन्य लोगों के सुझावों और राय के आधार पर बेहतर हो सकती हैं.

Protected Audience के प्रपोज़ल के आगे बढ़ने के साथ-साथ, हम Chrome में उपलब्ध सेटिंग को अपडेट करते रहेंगे. ये सेटिंग, टेस्ट और सुझाव/राय के आधार पर तय की जाएंगी. आने वाले समय में, हम Protected Audience और उससे जुड़े डेटा को मैनेज करने के लिए, ज़्यादा बेहतर सेटिंग उपलब्ध कराएंगे.

जब उपयोगकर्ता गुप्त मोड में ब्राउज़ करते हैं, तो एपीआई कॉलर, ग्रुप की सदस्यता को ऐक्सेस नहीं कर सकते. साथ ही, जब उपयोगकर्ता अपनी साइट का डेटा मिटाते हैं, तो सदस्यता हट जाती है.



दर्शकों से जुड़ना और सुझाव/राय देना या शिकायत करना

सहायता पाएं

लागू करने, डेमो या दस्तावेज़ के बारे में सवाल पूछने के लिए:

Chrome में Protected Audience API को लागू करने से जुड़ी गड़बड़ियों और समस्याओं के लिए: * एपीआई के लिए मौजूदा समस्याएं देखें. * crbug.com/new पर जाकर, नई समस्या बताएं.

अपडेट पाएं

ज़्यादा जानें


Unsplash पर रे हेनेसी की ओर से अपलोड की गई फ़ोटो.