1. مقدمة
تتألف خدمات عروض الأسعار والمزادات (B&A) من 4 خدمات للشراة والبائعين لتسهيل مزاد شريحة الجمهور المحمية:
مجموعة المستخدِمين المحتملين:
- خدمة واجهة المشتري
- خدمة عروض الأسعار
مجموعة البائع:
- خدمة البائع في الواجهة الأمامية
- خدمات المزاد
يرشدك هذا الدليل التعليمي حول رموز البرامج إلى كيفية إعداد عملية الإعداد الشاملة واختبارها في بيئتك المحلية. من المتوقّع أن تستغرق الجولة الإرشادية ساعة واحدة تقريبًا، باستثناء وقت إنشاء الخدمة الأولي.
على الرغم من أنّه يمكنك العمل على رمز جهة الشراء أو رمز جهة البيع فقط، من المفيد إعداد عملية الربط التام بين الأنظمة في بيئتك المحلية لفهم طريقة عمل حِزم المستخدِم والمُورِّد معًا بشكل أفضل. من خلال إعداد كلتا الحِزم، يمكنك أن تكون أكثر ثقة لاحقًا عند الدمج مع حِزمة البائع أو المشتري الخاصة بجهة أخرى. ويساعدك اختبار الخدمات محليًا أيضًا في توفير تكلفة التطوير.
في هذا الدرس التطبيقي حول الترميز، سنستخدم تطبيق "الاختبار المحلي" من "اختبار A/B" كمرجع إرشادي.
يستضيف تطبيق الاختبار المحلي المصاحب موارد مختلفة للمشترين والبائعين المستخدَمة في مزاد B&A. يقدّم التطبيق أيضًا واجهة مستخدم في http://localhost:3000
تتيح لك محاكاة إعدادات المزاد المختلفة.
2. إعداد البيئة
2.1 تجهيز جهاز Linux
استخدِم جهاز Linux محليًا أو وفِّر جهاز Linux افتراضيًا لمقدّم الخدمات السحابية الذي تختاره. لتحسين وقت التصميم، يُنصح باستخدام 16 نواة كحدّ أدنى، ويُفضّل استخدام 32 نواة أو أكثر.
يُرجى العِلم أنّنا سنحمّل صفحة HTML من http://localhost:3000
من هذا الجهاز. إذا لم توفّر الآلة الافتراضية واجهة مستخدم رسومية، تأكَّد من إمكانية الوصول إلى المنفذ 3000
من جهازك المحلي حتى تتمكّن من الاتصال به.
2.2 تثبيت Docker
نستخدم Docker لتشغيل الخدمات وتطبيق الاختبار المحلي.
سنستخدم النص البرمجي المخصّص لتسهيل الاستخدام لتثبيت Docker في بيئة اختبار.
# Install Docker
> curl -fsSL https://get.docker.com -o get-docker.sh
> sudo sh get-docker.sh
# Set up sudo-less Docker
> sudo groupadd docker
> sudo usermod -aG docker $USER
> newgrp docker
# Test
> docker run hello-world
تحذير: من خلال الإعداد بدون sudo، تمنح مجموعة Docker المستخدم امتيازات على مستوى الجذر. اطّلِع على دليل Docker بدون sudo للتعرّف على مزيد من المعلومات.
2.3 بدء تطبيق "الاختبار على الأجهزة الجوّالة" المصاحب
يقدّم التطبيق المصاحب موارد مثل النصوص البرمجية النموذجية لعروض الأسعار/التقييمات، ونقاط نهاية نموذجية لنظام BYOS للقيمة/المفتاح. يجب بدء تشغيل التطبيق قبل تشغيل خدمات B&A حتى يمكن تحميل الموارد إلى الخدمات.
اسحب مستودع تطبيقات الاختبار على الجهاز للأسفل:
git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git
من جذر المستودع، شغِّل النص البرمجي للإعداد:
./setup
سينشئ نص الإعداد شبكة ba-dev
Docker، وسينشئ شهادات طبقة المقابس الآمنة (SSL)، وسينشئ صورة التطبيق التجريبي.
بعد اكتمال عملية الإنشاء بنجاح، شغِّل النص البرمجي لبدء التطبيق:
./start
3- إنشاء اختبارات B&A وتشغيلها على الجهاز
3.1 سحب خدمات B&A
سنشغّل مجموعتَين من خدمات B&A على الجهاز نفسه، لذا سننزِّل المستودع إلى مجلدين مختلفَين.
المجموعة أ:
نزِّل مستودع B&A:
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a
المجموعة ب
نزِّل مستودع B&A:
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`
3.2 إنشاء الخدمات
من المجلد الجذر لكل مجلد B&A، نفِّذ الأمر التالي لإنشاء الخدمات الأربعة كلها:
production/packaging/build_and_test_all_in_docker \
--service-path bidding_service \
--service-path auction_service \
--service-path buyer_frontend_service \
--service-path seller_frontend_service \
--platform gcp \
--instance local \
--no-precommit \
--no-tests \
--build-flavor non_prod \
--gcp-skip-image-upload
سيؤدّي الأمر أعلاه إلى إنشاء مثيل local
من الإصدار التطويري (non_prod
) لمنصّة Google Cloud Platform (gcp
) لجميع الخدمات الأربع. عدِّل علامة --platform
لموفّر الخدمات السحابية الذي تختاره إذا لزم الأمر. للاطّلاع على مزيد من المعلومات عن علامات الإنشاء، اطّلِع على ملف build_and_test_all_docker
.
قد يستغرق الإنشاء الأولي ساعتَين في حال استخدام جهاز يتضمّن 64 نواة، ويزداد وقت الإنشاء بشكل خطي حسب عدد النوى. إذا كنت تستخدم جهازًا مزوّدًا بمعالج 32 مركزًا، قد تستغرق العملية 4 ساعات. إذا كنت تستخدم جهازًا مزوّدًا بمعالج 16 مركزًا، قد يستغرق ذلك 8 ساعات.
يُرجى العِلم أنّ عمليات الإنشاء اللاحقة تستخدِم ذاكرة التخزين المؤقت، ومن المفترض أن تستغرق كل عملية إنشاء مدة تتراوح بين 5 و20 دقيقة تقريبًا.
(قابلتُ راندي مونرو من xkcd أثناء كتابة هذا الدرس التطبيقي، وأخبرته أنّني أضفت هذه القصة المضحكة هنا)
3.3 تشغيل الخدمات
لأغراض الاختبار، سنشغّل 8 خدمات (4 خدمات لكل حزمة). يتم إعداد كل أمر لاستخدام الموارد التي يوفّرها تطبيق "الاختبار على الجهاز". ننصح بشدة باستخدام مدير نوافذ مثل tmux
.
افتح 8 نوافذ وحدة طرفية إضافية على الأقل، ونفِّذ الأوامر التالية في كل جلسة.
يُرجى العلم أنّه يجب أن يكون خادم تطبيق "الاختبار على الجهاز فقط" قيد التشغيل في عملية منفصلة، لأنّ التطبيق سيعرض نصوص عروض الأسعار وعمليات التقييم.
3.3.1 مجموعة الطلبات "أ"
الخدمة | Command |
|
|
|
|
|
|
|
|
3.3.2 مجموعة الأوامر ب
الخدمة | Command |
|
|
|
|
|
|
|
|
3.3.2 متغيّرات البيئة لنصوص التشغيل المحلية
يمكن استخدام متغيّرات البيئة التالية للتحكّم في سلوك بدء التشغيل.
متغيّر البيئة | مدى التوفّر | الوصف |
| جميع الخدمات | العلامات التي يجب ضبطها لأمر docker |
| جميع الخدمات | عند إجراء الاختبار على جهازك المحلي، قد تحتاج إلى استخدام شهادة موقعة ذاتيًا لا تجتاز عملية التحقّق من نظير طبقة المقابس الآمنة في الإعداد التلقائي هو |
| جميع الخدمات | مستوى سجلات الخدمة يقدّم المستوى الأعلى المزيد من السجلات. 0 هي أدنى قيمة و10 هي أعلى قيمة. الإعداد التلقائي هو |
| خدمة عروض الأسعار | منفذ "خدمة عروض الأسعار" الإعداد التلقائي هو |
| خدمة عروض الأسعار | عنوان URL لمنطق عروض الأسعار |
| خدمة عروض الأسعار | نقل البيانات لتدريب النماذج |
| خدمة عروض الأسعار | الوسيطات لاستنتاج عروض الأسعار |
| خدمة BFE | منفذ خدمة BFE الإعداد التلقائي هو |
| خدمة BFE | عنوان مفتاح/قيمة BYOS الخاص بالمشتري |
| خدمة BFE | عنوان مفتاح/قيمة TEE الخاص بالمشتري |
| خدمة BFE | عنوان خدمة عروض أسعار المشتري |
| خدمات المزاد | منفذ "خدمات المزاد" الإعداد التلقائي هو |
| خدمات المزاد | عنوان URL لمنطق التقييم |
| خدمات المزاد | عنوان URL لإعداد تقارير "فوز المشتري" |
| خدمات المزاد | نص إعداد تقارير "فوز المشتري" |
| خدمات المزاد | نص برمجي لإعداد تقارير "فوز المشتري" في برنامج PAS |
| خدمة SFE | منفذ خدمة SFE الإعداد التلقائي هو |
| خدمة SFE | عنوان خدمة المزاد الخاصة بالبائع |
| خدمة SFE | عنوان مفتاح/قيمة BYOS الخاص بالبائع |
| خدمة SFE | عنوان مفتاح/قيمة TEE للبائع |
| خدمة SFE | بلد إقامة البائع |
| خدمة SFE | عناوين BFE للمشتري |
4. الاختبار باستخدام Secure Invoke من سطر الأوامر
4.1 اختبار SFE
يمكنك أيضًا استخدام أداة Secure Invoke المضمّنة في حزمة B&A Services للاتصال بالخدمات مباشرةً من سطر الأوامر.
4.1.2 حمولة SelectAd
لإطار عمل المعالجة المحدودة
تمّت تعبئة طلب JSON التالي بإعداد مزاد B&A لبائع واحد في SSP-BA
:
{
"auction_config": {
"seller": "https://localhost:6002",
"auction_signals": "{\"testKey\":\"someValue\"}",
"seller_signals": "{\"testKey\":\"someValue\"}",
"buyer_list": [
"https://localhost:5003",
"https://localhost:5004"
],
"per_buyer_config": {
"https://localhost:5003": { "buyer_signals": "{\"testKey\":\"someValue\"}" },
"https://localhost:5004": { "buyer_signals": "{\"testKey\":\"someValue\"}" }
}
},
"raw_protected_audience_input": {
"publisher_name": "http://localhost:4001",
"generation_id": "1210718540",
"enable_debug_reporting": true,
"raw_buyer_input": {
"https://localhost:5003": {
"interest_groups": [
{
"name": "dsp-x-demo",
"ad_render_ids": ["1234"],
"bidding_signals_keys": ["demo-key"],
"browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
"user_bidding_signals": "[1, 2, 3]"
}
]
},
"https://localhost:5004": {
"interest_groups": [
{
"name": "dsp-x-demo",
"ad_render_ids": ["1234"],
"bidding_signals_keys": ["demo-key"],
"browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
"user_bidding_signals": "[1, 2, 3]"
}
]
}
}
}
}
احفظ الملف باسم sfe-test.json
في المجلد الجذر لمستودع خدمات B&A في المجموعة "أ" (سينسخ نص إنشاء B&A الملفات في المجلد الجذر للمستودع إلى مجلد /src/workspace
في صورة Docker).
4.1.2 الاتصال بواجهة SFE باستخدام Secure Invoke
نفِّذ الأمر التالي من المجلد الجذر لمستودع B&A Services:
DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
-- \
-target_service=sfe \
-input_file=/src/workspace/sfe-test.json \
-host_addr=192.168.84.104:50053 \
-client_ip=192.168.84.100 \
-insecure=true
إذا تم إعداد حِزم B&A بشكل صحيح، ستتلقّى الردّ التالي الذي يشير إلى نجاح العملية:
{"adRenderUrl":"https://localhost:5004/ad.html","interestGroupName":"dsp-x-demo","interestGroupOwner":"https://localhost:5004","score":39,"bid":39,"biddingGroups":{"https://localhost:5003":{"index":[0]},"https://localhost:5004":{"index":[0]}}}
4.2 اختبار BFE
4.2.1 طلب GetBids
من BFE
{
"buyer_input": {
"interest_groups": {
"name": "dsp-x-demo",
"ad_render_ids": ["1234"],
"bidding_signals_keys": ["demo-key"],
"browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" }
}
},
"auction_signals": "{\"testKey\":\"someValue\"}",
"buyer_signals": "{\"testKey\":\"someValue\"}",
"seller": "https://localhost:6002",
"publisher_name": "http://localhost:4001",
"enable_debug_reporting": true,
"client_type": "CLIENT_TYPE_BROWSER"
}
احفظ الملف باسم bfe-test.json
في المجلد الجذر لمستودع B&A Services.
4.2.2 استدعاء BFE باستخدام Secure Invoke
نفِّذ الأمر التالي من المجلد الجذر لمستودع B&A Services:
DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
-- \
-target_service=bfe \
-input_file="/src/workspace/bfe-test.json" \
-host_addr="192.168.84.102:50051" \
-client_ip=192.168.84.100 \
-insecure=true
في حال إعداد حِزم B&A بشكل صحيح، يعرض BFE الردّ التالي:
{"bids":[{"bid":6,"render":"https://localhost:5003/ad.html","interestGroupName":"dsp-x-demo"}],"updateInterestGroupList":{}}
4.3 التحقّق من سجلّات SFE
انتقِل إلى المحطة الطرفية وتحقَّق من سجلّات SFE. سنطّلع على بعض السجلات البارزة في الإخراج.
4.3.1 الحمولة المشفّرة لطلب SelectAd
في إخراج سجلّ SFE هذا، نجد الحمولة المشفَّرة لمكالمة navigator.getInterestGroupAdAuctionData()
. ينشئ المتصفّح هذه الحمولة، ويرسلها من العلامة إلى SAS، ثم تعيد SAS توجيهها إلى SFE:
I1210 21:20:47.266673 37 select_ad_reactor.cc:228] Protected auction ciphertext: AEAAIAABAAKg3OQSSLEBMR1MmJiwfOT8uef41iE+DQIvKUowsQvVcGbWZ+r17ff2r/iTbEnwqLPtpAxSTy77mi+cVV5cKjkKb4piaZnKiCDIMCyEvrQUD4+BG+HgrbUFhqiWPmQhNThvInMaHuYrXG7xushbRtvSPsVzEl6iBZcLZzD7W3CHMFK7bnJ+ufu52W6B7/8dOQ1gZW6SpwXMGNcrurTGoucbwbZRIPqCcbZk76J1gB69wrDYRo1wQ6jmBleLM36nulxbEj/sHhpQIgr895aKqEGQ3Fy+/HHPTO+zHphcX44YeF6mZ/I+WxZTDxCi1x27nI4yvzC8vI4a/giJN5XUlJZGb/fMrj3/Qly+gwJ8lbxdX+4GWTooDoS4MTtiBpJqh9wkIQ5XwfO54p8Kv6j/tk+51hOfVkOdtGwX0LvVrWT9PiJOJHa23nZ1fLg/22mTe05xdbR3WVeA+xiO9YwF4ozyCYDRUkDyWB/3k9RuaaT9H5S1szVpuOuD2nYSRpT9svmpfG4kipiS6BTPZPX2whDlukpuuoFgdiDtH6cFShNhZ5C47R0ayAvaZ1QSpOZMWfA6pdl4nhvNLpOKesKY/KFDEBzpUXRDsQWsfvmdqFl1mCeX9rOrEc9rodYVLXXhM8GPycehHmvqkccTBW6kipOQlmnSdIYaFmtWSFpUrzxajGkct3mZdTjVjOf...
4.3.2 الحمولة التي تم فك تشفيرها
في هذا الإخراج، نجد الحمولة المشفَّرة لمكالمة navigator.getInterestGroupAdAuctionData()
:
I1210 21:20:47.267590 37 select_ad_reactor.cc:347] (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Decoded BuyerInput:
https://localhost:5003 : {interest_groups { name: "dsp-x-demo" bidding_signals_keys: "demo-key" browser_signals { join_count: 1 recency: 7 prev_wins: "[]" } }}
4.3.3 طلب GetBids
إلى BFE
يتم إرسال طلب GetBids
من SFE إلى BFE:
I1210 21:20:47.267710 37 select_ad_reactor.cc:751] (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Getting bid from a BFE
I1210 21:20:47.267729 37 buyer_frontend_async_client.cc:52] Raw request:
buyer_input {
interest_groups {
name: "dsp-x-demo"
bidding_signals_keys: "demo-key"
browser_signals {
join_count: 1
recency: 7
prev_wins: "[]"
}
}
}
auction_signals: "{\"testKey\":\"someValue\"}"
buyer_signals: "{\"testKey\": \"someValue\"}"
seller: "https://localhost:6002"
publisher_name: "localhost"
enable_debug_reporting: true
log_context {
generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
client_type: CLIENT_TYPE_BROWSER
4.3.4 GetBids
ردّ من BFE
يستجيب BFE بعرض السعر:
I1210 21:20:47.282549 41 select_ad_reactor.cc:856] (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Received response from a BFE ...
I1210 21:20:47.282552 41 select_ad_reactor.cc:859] (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252)
GetBidsResponse:
bids {
bid: 9
render: "https://localhost:5003/ad.html"
interest_group_name: "dsp-x-demo"
}
update_interest_group_list {
}
4.3.5 ScoreAds
طلب إلى "خدمات المزاد"
بعد استلام عروض الأسعار، يُجري SFE طلبًا من النوع ScoreAds
إلى خدمة المزاد لكل عرض سعر:
I1210 21:20:47.287898 18 select_ad_reactor.cc:1280] (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) ScoreAdsRawRequest:
ad_bids {
bid: 9
render: "https://localhost:5003/ad.html"
interest_group_name: "dsp-x-demo"
interest_group_owner: "https://localhost:5003"
join_count: 1
k_anon_status: true
}
seller_signals: "{\"testKey\":\"someValue\"}"
auction_signals: "{\"testKey\":\"someValue\"}"
scoring_signals: "{\"renderUrls\":{\"https://localhost:5003/ad.html\":[1,2,3],\"https://localhost:5004/ad.html\":[1,2,3]}}"
publisher_hostname: "localhost"
enable_debug_reporting: true
log_context {
generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
per_buyer_signals {
key: "https://localhost:5003"
value: "{\"testKey\": \"someValue\"}"
}
per_buyer_signals {
key: "https://localhost:5004"
value: "{\"testKey\": \"someValue\"}"
}
seller: "https://localhost:6002"
4.3.6 ScoreAds
استجابة من "خدمات المزاد"
تستجيب خدمة مزاد البائع بدرجة الرغبة:
I1210 21:20:47.298029 33 default_async_grpc_client.h:134] Decrypting the response ...
I1210 21:20:47.298100 33 default_async_grpc_client.h:152] Decryption/decoding of response succeeded: ad_score {
desirability: 9
render: "https://localhost:5003/ad.html"
interest_group_name: "dsp-x-demo"
buyer_bid: 9
interest_group_owner: "https://localhost:5003"
win_reporting_urls {
top_level_seller_reporting_urls {
}
}
ad_type: AD_TYPE_PROTECTED_AUDIENCE_AD
}
4.3.7 SelectAd
ردّ من SFE
يتم تشفير استجابة SelectAd
لوحدة التحكّم في حدود الجلسة وإرسالها إلى SAS:
I1210 21:20:47.298428 33 select_ad_reactor.cc:1413] (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Encrypted SelectAdResponse:
auction_result_ciphertext: "\023\233\252\321\000\331M\327\216\201S\332kl?\322\255\247\312\375h\007W\367\016\366FR\364\275\377\326\027h\204\203\265\t\271-\333\266\tH\342\033F\001k\211C\026V\013\271\255(\236\273\353\260\275\007\346\027\340?\005|\235S\244\265\2563U\246\322\177%\200/\3175\034 \020\024\362\345\3263\356F.s\261\005\231\262Z\000\330x\0230\335>\"\217\254\010\254\330>\206\007\274\235\037`\370W\032\207\356\367\206\026\341.i\"$\370\367\2554i\247\354\304e\306\2466S\337\321w\327+!\316\035:\002\231\246\362\366qm\211\000\013\343\345\224{\365py\361\374\316\202\217-\244\302\331\216D\025W#.\304nH\235\315\311<#\342\344\324\257\354\2441\251\312\320\226\342\021\377>3`\347/\350\254h\306\273\023\365\340@\321\2412\254\323\213\0137,\013n\220|\211\323/\030)\314\263\223\355>\254\312aa`!\375\335\023Z\234p\206\037\001\355\261{$\025+\341\275\327Ny\342\342\264=\376\2138\224\026\2058\251\020\202\245*46\023\307)K\342\364k<\2104r\247\034\216}\034\001\374\215\363\210\026\275\371S>\031;f.b\260\363\257.\255\023I\341A\237*_T\355\262\005\344L\336D%\327\267@\302$\300\340\203c\350|\337>C\275c\260\202o\315xp\260\257\241\305U\nK\033\274L6\025\350\373a:\253\212&>p\210\215\017&^\327\005_\037\020\212\362\351\341\231@g\372\0037\275b:)\207\303d\243?\261O\266\343\214\200\004\247\372\022S\326\200\037\330\252r\257+e\273[\231\202\3625{\330\213\240\370\245\\\214\350/\313\ty/\004\313\0304k\223\354\374\305\233\264\224K\344\241\251\322?\323q6\314D\027\200\203\035]\023O\306\230?\203\237:\254\305\265\332\330\2641l\322\020\022\330O-\242\207>Q\364_{F\235\353tk\207\035\205\005\221\373\207\0143\035\014\322\240H\220\347%\262f\347\017\352\273\265\231\014\204\r\312\254z\000\340&\354\222\323\245\356\217(i\246"
5- الاختبار باستخدام تطبيق الاختبار المحلي من المتصفّح
5.1 فتح Chrome
اطّلِع على مقالة Chromium حول بدء تشغيل Chrome من سطر الأوامر، وابدأ تشغيله باستخدام العلامات التالية:
google-chrome --enable-privacy-sandbox-ads-apis --disable-features=EnforcePrivacySandboxAttestations,FledgeEnforceKAnonymity --enable-features=FledgeBiddingAndAuctionServerAPI,FledgeBiddingAndAuctionServer:FledgeBiddingAndAuctionKeyURL/https%3A%2F%2Fstorage.googleapis.com%2Fba-test-buyer%2Fcoordinator-test-key.json
تم ضبط العلامة لتحميل مفتاح التنسيق النموذجي الذي استضفناه على https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json
.
ملاحظة مهمة: تأكَّد من الخروج تمامًا من جميع مثيلات Chrome قبل فتحه من سطر الأوامر باستخدام علامتَي B وA. للخروج من جميع عمليات Chrome، جرِّب تشغيل ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9
من سطر الأوامر.
5.2 الانتقال إلى واجهة مستخدم تطبيق "الاختبار الداخلي"
يمكن العثور على واجهة مستخدم التطبيق على http://localhost:3000 في نسخة متصفّح Chrome التي فتحتها باستخدام العلامات. قد يختلف العنوان الدقيق الذي تزوره إذا كنت تستخدم جهاز افتراضيًا له اسم مضيف مختلف.
في الصفّ العلوي من التطبيق، تحتوي لوحة "عناصر التحكّم" على الأزرار التي تتيح محاكاة إعدادات مختلفة للمزادات. تحتوي اللوحةان الأخريان على إطارات iframe من الموقعَين الإلكترونيَين للمعلِن والناشر.
عند النقر على الزرّ "تحميل علامات منصّات عرض الإعلانات" في إطار iframe لصفحة المعلِن، تتم إضافة نص برمجي من كلّ منصّة عرض إعلانات إلى الصفحة. وتُضيف هذه النصوص البرمجية المستخدم إلى مجموعات الاهتمامات. افتح "أدوات مطوّري البرامج في Chrome"، وانتقِل إلى "التطبيق / التخزين / مجموعات الاهتمامات" لفحص مجموعات الاهتمامات التي تمّ ربطها بعلامات منصّة إدارة الأداء (DSP):
بعد ذلك، انقر على الأزرار في لوحة "عناصر التحكّم" لمحاكاة أنواع مختلفة من المزادات.
في حال تم إعداد "خدمات B&A" و"تطبيق الاختبار على الجهاز فقط" بشكل صحيح، يتم عرض الإعلان السابق في لوحة "إطار iframe لموقع الناشر الإلكتروني".
5.3 إعدادات مزاد تطبيق الاختبار على الجهاز
في تطبيق الاختبار المحلي المصاحب، يتم استضافة المشاركين التاليين، ويتم تمييزهم حسب رقم المنفذ (يُعدّ المنفذ المختلف مصدرًا مختلفًا):
مُشارِك | الوصف | المنفذ |
المعلِن | تحميل علامات منصّة إدارة الأداء (DSP) على الصفحة |
|
الناشر | تحميل علامات SSP على الصفحة |
|
| مشتري على الجهاز فقط |
|
| مشتري على الجهاز فقط |
|
| مشتري الإعلانات التجارية |
|
| مشتري الإعلانات التجارية |
|
| البائع من المستوى الأعلى |
|
| البائع على الجهاز فقط |
|
| بائع للأجهزة الجوّالة والأجهزة اللوحية فقط |
|
| البائع الذي يستخدم نموذجًا مختلطًا |
|
هناك أربعة منصّات لإدارة الأداء:
DSP-A
وDSP-B
يشاركان في المزادات على الجهازDSP-X
وDSP-Y
يشاركان في مزادات B&A
هناك أربعة وسطاء عرض مبيعات، وينفّذ كل بائع إعدادات مزاد مختلفة:
SSP-OD
تُجري مزادًا على الجهاز فقطSSP-BA
تُجري مزادًا للإعلانات الصورية والإعلانات المتجاوبة فقطSSP-MIX
يُجري مزادًا بالوضع المختلطSSP-TOP
يدير مزادًا يضمّ بائعين متعدّدينSSP-OD/BA/MIX
مشاركة بائعي المكوّنات في مزاد "SSP-TOP
" المتعدد البائعين
للاطّلاع على البنية الكاملة، اطّلِع على مخطّط التصميم.
5.4 إعداد عروض الأسعار وخدمات المزاد
في هذا الدليل التعليمي حول رموز البرامج، نُجري مجموعتَين من اختبارات A/B جنبًا إلى جنب.
تأهّب | الخدمة | مُشارِك | عنوان شبكة |
المجموعة "أ" | خدمة عروض الأسعار |
|
|
خدمة BFE |
|
| |
خدمات المزاد |
|
| |
خدمة SFE |
|
| |
المجموعة ب | خدمة عروض الأسعار |
|
|
خدمة BFE |
|
| |
خدمات المزاد |
|
| |
خدمة SFE |
|
| |
تطبيق | تطبيق الاختبار على الجهاز | الكل |
|
- في المجموعة "أ"، يستخدم
DSP-X
خدمات المشتري ويستخدمSSP-BA
خدمات البائع. - في المجموعة "ب"، يستخدم
DSP-Y
خدمات المشتري ويستخدمSSP-MIX
خدمات البائع.
للتواصل بين تطبيق الاختبار على الجهاز وخدمات B&A، يتم استخدام شبكة جسر Docker. يتم إنشاء شبكة الجسر ba-dev
من خلال النص البرمجي للإعداد في تطبيق "الاختبار على الجهاز". ويتم منح خدمات B&A عنوان IP في الشبكة الفرعية 192.168.84.0
.
على سبيل المثال، عند الاتصال بوحدة التحكّم في حدود الجلسة (SFE) للمجموعة "أ" من التطبيق، يتم استخدام عنوان الشبكة 192.168.84.104:50053
. عند تحميل نص عروض الأسعار النموذجية من DSP-X إلى BFE، يتم استخدام https://192.168.84.100:5003/generate-bid.js
.
6- الخاتمة
نأمل أن تكون قد تعرّفت الآن على كيفية تشغيل حِزمة "خدمات البنية الأساسية والتطبيقات" محليًا على جهازك، وفهمت بشكل أفضل كيفية تواصل الخدمات مع بعضها.
6.1. الدعم الفني
- إذا كان لديك سؤال حول إعداد تطبيق الاختبار على الجهاز، يمكنك فتح مشكلة في مستودع LTA.
- إذا كان لديك سؤال حول خدمات عروض الأسعار والمزادات، يمكنك فتح مشكلة في مستودع خدمات عروض الأسعار والمزادات.
- إذا كان لديك سؤال عن "مبادرة حماية الخصوصية" بشكل عام، يمكنك فتح مشكلة في مستودع privacy-sandbox-dev-support.