ব্যবহারকারী-এজেন্ট টার্গেটিং

ইউজার-এজেন্ট হেডারটি ঐতিহাসিকভাবে বিড অনুরোধে অন্তর্ভুক্ত করা হয়েছে যাতে ইনিশিয়েটিভ ডিভাইসের ব্রাউজার এবং প্ল্যাটফর্মের মতো দরকারী টার্গেটিং ডেটা প্রদান করা যায়। তবে, ব্রাউজারগুলি প্রায়শই ইউজার-এজেন্টকে ব্যবহারে অসুবিধার কারণে এবং ব্যবহারকারীর গোপনীয়তা আরও ভালভাবে সুরক্ষিত করার জন্য ব্যাপকভাবে সংশোধন করে। এর প্রতিক্রিয়ায়, গুগল ইউজার-এজেন্ট ক্লায়েন্ট হিন্টস সমর্থন করে, যা ইউজার-এজেন্ট হেডারের পরিপূরক হিসাবে উপলব্ধ হলে বিড অনুরোধে অন্তর্ভুক্ত করা হয়। এই ক্লায়েন্ট হিন্টস (সংক্ষেপে) Sec-Ch-UA* হেডার বা জাভাস্ক্রিপ্ট ক্লায়েন্ট হিন্টস API থেকে সংগ্রহ করা যেতে পারে।

BidRequest.device.ua ক্ষেত্রের মধ্যে User-Agent হেডারটি একটি স্ট্রিং হিসেবে প্রদর্শিত হয়।

একটি UserAgent বার্তা যখন উপলব্ধ থাকবে তখন ক্লায়েন্ট ইঙ্গিত দিয়ে পূর্ণ করা হবে, কিন্তু অন্যথায় User-Agent হেডার থেকে পার্স করা মানের উপর ভিত্তি করে পূরণ করা হবে। এটি BidRequest.device.sua ক্ষেত্রে প্রকাশ করা হয়েছে।

দরদাতাদের User-Agent স্ট্রিং ব্যবহার না করে UserAgent বার্তা ব্যবহার করার জন্য জোরালোভাবে উৎসাহিত করা হচ্ছে।

UserAgent কীভাবে পূরণ করা হয়

ইউজার-এজেন্ট হেডারের বিপরীতে, UserAgent বার্তাটি নির্দিষ্ট তথ্যের জন্য একাধিক ক্ষেত্রে বিভক্ত ব্যবহারকারী এজেন্ট তথ্য উপস্থাপন করে।

বিজ্ঞাপনের অনুরোধে ক্লায়েন্টের ইঙ্গিত পাওয়া যাচ্ছে কিনা তার উপর নির্ভর করে, UserAgent বার্তাটি নিম্নলিখিত উপায়ে পূরণ করা যেতে পারে:

  • যদি অনুরোধে কমপক্ষে কম-এনট্রপি ক্লায়েন্ট ইঙ্গিত থাকে, তাহলে UserAgent তাদের বিষয়বস্তুর উপর ভিত্তি করে পূরণ করা হয়।
  • যদি অনুরোধে শুধুমাত্র User-Agent হেডার থাকে, তাহলে হেডার থেকে কী পার্স করা যেতে পারে তার উপর ভিত্তি করে UserAgent পূরণ করা হয়।

উদাহরণ: User-Agent হেডারের উপর ভিত্তি করে UserAgent পূরণ করা

ধরুন, এমন একটি বিজ্ঞাপনের অনুরোধ আছে যেখানে ব্রাউজারটি নিম্নলিখিত হেডারগুলি পাঠায়:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36

শুধুমাত্র User-Agent হেডারের উপর ভিত্তি করে তৈরি একটি UserAgent নিম্নলিখিতগুলির মতো দেখতে পারে:

browsers: [{ brand: "Mozilla", version: ["5", "0"] },
           { brand: "AppleWebKit", version: ["537", "36"] },
           { brand: "Chrome", version: ["103", "0", "0", "0"] },
           { brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING

উদাহরণ: ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে UserAgent পূরণ করা

ধরুন, এমন একটি বিজ্ঞাপনের অনুরোধ আছে যেখানে ব্রাউজারটি নিম্নলিখিত হেডারগুলি পাঠায়:

User-Agent:                 Mozilla/5.0 (Windows NT 10.0; Win64; x64)
                            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua:                  ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch:             x86
Sec-Ch-Ua-Full-Version:     103.0.5060.134
Sec-Ch-Ua-Mobile:           ?0
Sec-Ch-Ua-Platform:         Windows
Sec-Ch-Ua-Platform-Version: 15.0.0

যেসব ক্ষেত্রে কমপক্ষে কম এনট্রপি ক্লায়েন্ট ইঙ্গিত অন্তর্ভুক্ত করা হয়, সেখানে ইউজার-এজেন্ট হেডার উপস্থিত থাকলেও, সেই হেডারগুলির বিষয়বস্তুর উপর ভিত্তি করে UserAgent পূরণ করা হবে। এটি নিম্নলিখিতগুলির মতো দেখাবে:

browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
           { brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
           { brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY

ব্যবহারকারী-এজেন্ট হেডার বনাম ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে জনবহুলকরণ

কিছু ক্ষেত্র ব্যবহারকারী-এজেন্ট হেডার নাকি ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে তৈরি, তার উপর নির্ভর করে ভিন্নভাবে পূরণ করা হয়। এই পার্থক্যগুলির সারসংক্ষেপ নিম্নরূপ:

  • একই ব্রাউজার এবং প্ল্যাটফর্মের জন্য, UserAgent.browsers.brand এবং UserAgent.platform.brand প্রায়শই User-Agent হেডার বা ক্লায়েন্ট হিন্টসের উপর ভিত্তি করে UserAgent মধ্যে ভিন্ন হবে। উদাহরণস্বরূপ, UserAgent.platform.brand যদি User-Agent হেডারের উপর ভিত্তি করে থাকে তবে "Windows NT" হিসাবে প্রদর্শিত হতে পারে, অথবা যদি এটি ক্লায়েন্ট হিন্টসের উপর ভিত্তি করে থাকে তবে "Windows" হিসাবে প্রদর্শিত হতে পারে।
  • কিছু UserAgent.browsers এন্ট্রি User-Agent হেডার বা Client Hints এর জন্য অনন্য। উদাহরণস্বরূপ, UserAgent যদি User-Agent হেডারের উপর ভিত্তি করে তৈরি করা হয় তবে "AppleWebKit" প্রদর্শিত হবে, যেখানে "Chromium" কেবল তখনই প্রদর্শিত হবে যদি এটি Client Hints এর উপর ভিত্তি করে তৈরি করা হয়।
  • শুধুমাত্র User-Agent হেডারের উপর ভিত্তি করে তৈরি একটি UserAgent এ ফ্রোজেন মান থাকতে পারে। উদাহরণস্বরূপ, যদি প্ল্যাটফর্মটি Windows 11 22H2 হয়, তাহলে UserAgent.platform.brand "Windows NT" তে সেট করা হবে এবং UserAgent.platform.version [“10”, “0”] তে সেট করা হবে কারণ এটি 10 ​​বা তার বেশি যেকোনো উইন্ডোজ সংস্করণের জন্য ফ্রোজেন মান।

ক্লায়েন্ট হিন্টসের উপর ভিত্তি করে UserAgent ডেটা সাধারণত হিমায়িত বা সংশোধন করা তথ্যের জন্য ভুল প্রতিস্থাপন হবে না। যদি ইউজার-এজেন্ট হেডার এবং ক্লায়েন্ট হিন্টসের উপর ভিত্তি করে UserAgent মধ্যে কোনও অসঙ্গতি থাকে, তাহলে UserAgent থেকে প্রাপ্ত তথ্যকে অগ্রাধিকার দেওয়া উচিত।

ইউজার এজেন্ট অবজেক্ট ফিল্ড

এই বিভাগে প্রতিটি ক্ষেত্রের সারসংক্ষেপ তুলে ধরা হয়েছে, যেখানে গুগল আরটিবি-নির্দিষ্ট আচরণ এবং ব্যবহারের জন্য সর্বোত্তম অনুশীলনের উপর আলোকপাত করা হয়েছে।

ব্রাউজার

BrandVersion এন্ট্রিগুলির একটি তালিকা রয়েছে যা সাধারণত নির্দিষ্টতা অনুসারে ক্রমানুসারে সাজানো হয় - উদাহরণস্বরূপ, যদি আপনি browsers বিষয়বস্তু তালিকাভুক্ত করেন, তাহলে প্রতিটি এন্ট্রির brand নিম্নলিখিত ক্রমে প্রদর্শিত হতে পারে:

ব্র্যান্ড অর্থ
মোজিলা মজিলা-সামঞ্জস্যপূর্ণ
অ্যাপলওয়েবকিট অ্যাপলওয়েবকিট-ভিত্তিক, মজিলার একটি উপসেট।
ক্রোম ক্রোম ব্রাউজার, অ্যাপলওয়েবকিট-সামঞ্জস্যপূর্ণ ব্রাউজারগুলির একটি উপসেট
সাফারি মোবাইলের বিপরীতে ডেস্কটপ ভেরিয়েন্ট।

UserAgent সবসময় ব্রাউজারগুলিকে কোনও নির্দিষ্ট ক্রমে তালিকাভুক্ত করবে না, বিশেষ করে যদি এটি ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে থাকে। নিম্নলিখিতটি source এর মানের উপর ভিত্তি করে আপনি অন্যান্য পার্থক্যগুলি দেখতে আশা করতে পারেন তা বর্ণনা করে:

  • USER_AGENT : version ক্ষেত্রটি একটি প্রধান সংস্করণে হ্রাস করা যেতে পারে অথবা হিমায়িত করা যেতে পারে (এজেন্ট-নির্দিষ্ট নীতির উপর নির্ভর করে)। মনে রাখবেন যে মানটি হিমায়িত হওয়ার কোনও ইঙ্গিত থাকবে না।
  • CLIENT_HINTS_LOW_ENTROPY এবং CLIENT_HINTS_HIGH_ENTROPY : এন্ট্রিগুলি কোনও মানদণ্ড অনুসারে সাজানো হয় না; উদাহরণস্বরূপ, একই ব্রাউজার প্রতিটি অনুরোধে এই এন্ট্রিগুলিকে বিভিন্ন ক্রমে পাঠাতে পারে। এগুলিতে একটি GREASE এন্ট্রিও থাকতে পারে, যা উপেক্ষা করা উচিত।
  • CLIENT_HINTS_HIGH_ENTROPY : ব্রাউজারে পাওয়া সমস্ত version ক্ষেত্র পূর্ণ সংস্করণে সেট করা হতে পারে।

প্ল্যাটফর্ম

প্ল্যাটফর্মের বর্ণনাকারী একটি BrandVersion এন্ট্রি। এটি User-Agent হেডার এবং Client Hints জুড়ে সামঞ্জস্যপূর্ণ নাও হতে পারে, তাই কিছু প্ল্যাটফর্মকে টার্গেট করার জন্য দুটি নাম পরীক্ষা করার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, Apple-এর Macintosh অপারেটিং সিস্টেমকে User-Agent হেডারে "Macintosh" হিসাবে চিহ্নিত করা হয়েছে, কিন্তু Client Hints-এ "macOS" হিসাবে চিহ্নিত করা হয়েছে। নিম্নলিখিতটি source এর মানের উপর ভিত্তি করে আপনি অন্যান্য পার্থক্যগুলি দেখতে আশা করতে পারেন তা বর্ণনা করে:

  • USER_AGENT : version ক্ষেত্রটি একটি প্রধান সংস্করণে হ্রাস করা হতে পারে অথবা হিমায়িত করা হতে পারে। মনে রাখবেন যে মানটি হিমায়িত হওয়ার কোনও ইঙ্গিত থাকবে না।
  • CLIENT_HINTS_LOW_ENTROPY : version ক্ষেত্রটি পূরণ করা হবে না।
  • CLIENT_HINTS_HIGH_ENTROPY : version ক্ষেত্রটি পূর্ণ সংস্করণে সেট করা থাকতে পারে।

মোবাইল

বিজ্ঞাপনের মতো কন্টেন্ট ছোট স্ক্রিন এবং/অথবা টাচ ইনপুটের জন্য অপ্টিমাইজ করা উচিত কিনা তা নির্দেশ করে। মনে রাখবেন যে এটি অগত্যা ডিভাইসের ধরণের নির্দেশক নয়, কারণ মোবাইল ব্রাউজারগুলিকে একটি "ডেস্কটপ সাইট" অনুরোধ করার জন্য কনফিগার করা যেতে পারে।

স্থাপত্য

প্ল্যাটফর্মের আর্কিটেকচার যেমন "x86" বা "arm" সনাক্ত করে।

ক্লায়েন্ট হিন্টস-ভিত্তিক একটি UserAgent জন্য, মনে রাখবেন যে এটি শুধুমাত্র তখনই পূরণ করা হবে যখন source CLIENT_HINTS_HIGH_ENTROPY তে সেট করা থাকবে।

বিটনেস

প্ল্যাটফর্মের বিটনেস শনাক্ত করে, যেমন এটিতে 32-বিট নাকি 64-বিট CPU আছে। ক্ষেত্রটি একটি পূর্ণসংখ্যা স্ট্রিং যা এর আর্কিটেকচার সম্পর্কে অতিরিক্ত তথ্য প্রদান করে; উদাহরণস্বরূপ, একটি "x86" আর্কিটেকচারে একটি বিটনেস "32" অথবা "64" তে সেট করা থাকতে পারে।

ক্লায়েন্ট হিন্টস-ভিত্তিক একটি UserAgent জন্য, মনে রাখবেন যে এটি শুধুমাত্র তখনই পূরণ করা হবে যখন source CLIENT_HINTS_HIGH_ENTROPY তে সেট করা থাকবে।

মডেল

ডিভাইস মডেল শনাক্ত করে। মোবাইল ডিভাইসের জন্য - অর্থাৎ ল্যাপটপ বা ডেস্কটপ নয় - এটি "Pixel 6 Pro" এর মতো একটি মডেল নাম দিয়ে পূর্ণ করা হবে।

source মানের উপর ভিত্তি করে আপনি যে পার্থক্যগুলি দেখতে পাবেন তা নীচে বর্ণনা করা হয়েছে:

  • USER_AGENT
    • মোবাইল ডিভাইস নয়: model ফিল্ডে প্রায়শই একটি সম্মিলিত আর্কিটেকচার এবং বিটনেস মান থাকবে যেমন উইন্ডোজের জন্য "x64"। এই মানটি ক্রস-প্ল্যাটফর্ম নয়; উদাহরণস্বরূপ, লিনাক্স একই হার্ডওয়্যারের জন্য "x86_64" ব্যবহার করতে পারে।
    • মোবাইল ডিভাইস: এই ক্ষেত্রে আর্কিটেকচার এবং বিটনেস অন্তর্ভুক্ত থাকবে না। আপনি যদি এই মানগুলিতে আগ্রহী হন, তাহলে UserAgent.architecture এবং UserAgent.bitness দেখুন।
  • CLIENT_HINTS_LOW_ENTROPY : model ক্ষেত্রটি পূরণ করা হবে না।
  • CLIENT_HINTS_HIGH_ENTROPY : model ফিল্ডটি শুধুমাত্র মোবাইল ডিভাইসের ডিভাইস মডেলের জন্য পূরণ করা হবে। ডেস্কটপ প্ল্যাটফর্মের জন্য কোনও মান সেট করা নেই।

উৎস

UserAgent তৈরি করতে কোন হেডার ব্যবহার করা হয়েছিল তা শনাক্ত করে। ক্লায়েন্ট হিন্টসের ক্ষেত্রে, এটি নিম্নলিখিত দুটি ক্ষেত্রেও পার্থক্য করে:

  • CLIENT_HINTS_LOW_ENTROPY : শুধুমাত্র মৌলিক ক্লায়েন্ট ইঙ্গিতগুলি উপলব্ধ।
  • CLIENT_HINTS_HIGH_ENTROPY : ক্লায়েন্ট ইঙ্গিতগুলি উপলব্ধ, যার মধ্যে কমপক্ষে একটি ক্ষেত্র রয়েছে যা উচ্চ এনট্রপি হিসাবে শ্রেণীবদ্ধ।