ব্যবহারকারী-এজেন্ট শিরোনামটি ঐতিহাসিকভাবে বিডের অনুরোধে অন্তর্ভুক্ত করা হয়েছে যাতে শুরু করা ডিভাইসের ব্রাউজার এবং প্ল্যাটফর্মের মতো দরকারী টার্গেটিং ডেটা প্রদান করা যায়। যাইহোক, ব্রাউজারগুলি প্রায়শই ব্যবহারকারী-এজেন্টের ব্যবহারের অসুবিধার কারণে এবং ব্যবহারকারীর গোপনীয়তা আরও ভালভাবে সুরক্ষিত করার জন্য ভারীভাবে সংশোধন করে। এর প্রতিক্রিয়া হিসাবে, Google ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত সমর্থন করে, যা ব্যবহারকারী-এজেন্ট শিরোলেখের পরিপূরক করার জন্য উপলব্ধ হলে বিড অনুরোধে অন্তর্ভুক্ত করা হয়। এই ক্লায়েন্ট ইঙ্গিতগুলি (সংক্ষেপে) Sec-Ch-UA* শিরোনাম বা Javascript ক্লায়েন্ট ইঙ্গিত API থেকে নেওয়া যেতে পারে।
ব্যবহৃত প্রোটোকলের উপর নির্ভর করে, ব্যবহারকারী-এজেন্ট শিরোনামটি নিম্নলিখিত স্ট্রিং ক্ষেত্রগুলির মধ্যে একটির সাথে উন্মুক্ত করা হয়েছে:
- OpenRTB:
BidRequest.device.ua
- Google RTB (অপ্রচলিত):
BidRequest.user_agent
একটি UserAgent
বার্তা ক্লায়েন্ট ইঙ্গিতগুলি উপলব্ধ হলে তা পপুলেট করা হবে, কিন্তু অন্যথায় User-Agent হেডার থেকে পার্স করা মানগুলির উপর ভিত্তি করে পপুলেট করা হবে৷ ব্যবহৃত প্রোটোকলের উপর নির্ভর করে, এটি নিম্নলিখিত ক্ষেত্রগুলির মধ্যে একটি হিসাবে প্রকাশ করা হবে:
- OpenRTB:
BidRequest.device.sua
- Google RTB (অপ্রচলিত):
BidRequest.user_agent_data
দরদাতাদের দৃঢ়ভাবে ব্যবহারকারী-এজেন্ট স্ট্রিং এর পরিবর্তে UserAgent
বার্তা ব্যবহার করার জন্য উত্সাহিত করা হয়।
কিভাবে UserAgent
জনবহুল হয়
User-Agent হেডারের বিপরীতে, UserAgent
বার্তা নির্দিষ্ট তথ্যের জন্য একাধিক ক্ষেত্রে বিভক্ত ব্যবহারকারী এজেন্ট তথ্য উপস্থাপন করে।
বিজ্ঞাপনের অনুরোধে ক্লায়েন্ট ইঙ্গিত পাওয়া যায় কিনা তার উপর নির্ভর করে, UserAgent
মেসেজ নিম্নলিখিত উপায়ে পূরণ করা যেতে পারে:
- যদি অনুরোধে অন্তত কম-এনট্রপি ক্লায়েন্টের ইঙ্গিত থাকে, তাহলে
UserAgent
তাদের বিষয়বস্তুর উপর ভিত্তি করে পপুলেট করা হয়। - অনুরোধে শুধুমাত্র User-Agent হেডার থাকলে,
UserAgent
হেডার থেকে পার্স করা যায় তার উপর ভিত্তি করে পপুলেট করা হয়।
উদাহরণ: ইউজার-এজেন্ট শিরোনামের উপর ভিত্তি করে 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
প্রায়শই ব্যবহারকারী-এজেন্ট শিরোনাম বা ক্লায়েন্ট ইঙ্গিতগুলির উপর ভিত্তি করে একটিUserAgent
মধ্যে পার্থক্য করে। উদাহরণস্বরূপ,UserAgent.platform.brand
"Windows NT" হিসাবে প্রদর্শিত হতে পারে যদি এটি User-Agent হেডারের উপর ভিত্তি করে হয়, অথবা "Windows" যদি এটি ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে হয়। - কিছু
UserAgent.browsers
এন্ট্রি ইউজার-এজেন্ট হেডার বা ক্লায়েন্ট ইঙ্গিতগুলির জন্য অনন্য। উদাহরণস্বরূপ, "AppleWebKit" প্রদর্শিত হবে যদিUserAgent
User-Agent হেডারের উপর ভিত্তি করে থাকে, যেখানে "Chromium" শুধুমাত্র ক্লায়েন্ট ইঙ্গিতগুলির উপর ভিত্তি করে প্রদর্শিত হবে। - User-Agent হেডারের উপর ভিত্তি করে শুধুমাত্র একটি
UserAgent
হিমায়িত মান ধারণ করতে পারে। উদাহরণস্বরূপ, যদি প্ল্যাটফর্মটি Windows 11 22H2 হয়,UserAgent.platform.brand
"Windows NT" এ সেট করা হবে এবংUserAgent.platform.version
[“10”, “0”]
এ সেট করা হবে কারণ এটি হিমায়িত মান 10 বা তার উপরে যেকোনো উইন্ডোজ সংস্করণ।
UserAgent
এর ডেটা যা ক্লায়েন্ট ইঙ্গিতগুলির উপর ভিত্তি করে তৈরি হয় তা সাধারণত হিমায়িত বা সংশোধিত তথ্যের জন্য একটি ভুল প্রতিস্থাপন হবে না। ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে ব্যবহারকারী-এজেন্ট শিরোনাম এবং একটি UserAgent
মধ্যে কোনো অসঙ্গতি থাকলে, UserAgent
কাছ থেকে তথ্য পছন্দ করা উচিত।
UserAgent অবজেক্ট ক্ষেত্র
এই বিভাগে Google RTB-নির্দিষ্ট আচরণ এবং ব্যবহারের জন্য সর্বোত্তম অনুশীলনের উপর ফোকাস সহ প্রতিটি ক্ষেত্রের সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে।
ব্রাউজার
ব্র্যান্ডভার্সন এন্ট্রিগুলির একটি তালিকা রয়েছে যা সাধারণত নির্দিষ্টতার দ্বারা অর্ডার করা হয়-উদাহরণস্বরূপ, আপনি যদি browsers
বিষয়বস্তু তালিকাভুক্ত করতে চান, প্রতিটি এন্ট্রির জন্য brand
নিম্নলিখিত ক্রমে প্রদর্শিত হতে পারে:
ব্র্যান্ড | অর্থ |
মজিলা | মজিলা-সামঞ্জস্যপূর্ণ |
AppleWebKit | AppleWebKit-ভিত্তিক, মজিলার একটি উপসেট। |
ক্রোম | Chrome ব্রাউজার, AppleWebKit-সামঞ্জস্যপূর্ণ ব্রাউজারগুলির একটি উপসেট |
সাফারি | ডেস্কটপ বৈকল্পিক, মোবাইলের বিপরীতে। |
UserAgent
সবসময় কোনো নির্দিষ্ট ক্রমে ব্রাউজার তালিকাভুক্ত করবে না, বিশেষ করে যদি এটি ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে হয়। নিম্নলিখিত অন্যান্য পার্থক্যগুলি বর্ণনা করে যা আপনি source
মানের উপর ভিত্তি করে দেখতে আশা করতে পারেন:
-
USER_AGENT
:version
ক্ষেত্রটি একটি প্রধান সংস্করণে কমিয়ে বা হিমায়িত করা যেতে পারে (এজেন্ট-নির্দিষ্ট নীতির উপর নির্ভর করে)। মনে রাখবেন যে মানটি হিমায়িত হওয়ার কোনও ইঙ্গিত থাকবে না। -
CLIENT_HINTS_LOW_ENTROPY
এবংCLIENT_HINTS_HIGH_ENTROPY
: কোনো মানদণ্ড দ্বারা এন্ট্রি করা হয় না; উদাহরণস্বরূপ, একই ব্রাউজার প্রতিটি অনুরোধে এই এন্ট্রিগুলিকে বিভিন্ন অর্ডারে পাঠাতে পারে। এগুলিতে একটি GREASE এন্ট্রিও থাকতে পারে, যা উপেক্ষা করা উচিত৷ -
CLIENT_HINTS_HIGH_ENTROPY
: ব্রাউজারে পাওয়া সমস্তversion
ক্ষেত্র সম্পূর্ণ সংস্করণে সেট করা হতে পারে।
প্ল্যাটফর্ম
প্ল্যাটফর্মের বর্ণনা করে একটি ব্র্যান্ড সংস্করণ এন্ট্রি। এটি ব্যবহারকারী-এজেন্ট শিরোনাম এবং ক্লায়েন্ট ইঙ্গিত জুড়ে সামঞ্জস্যপূর্ণ নাও হতে পারে, তাই কিছু প্ল্যাটফর্মের লক্ষ্য করার জন্য দুটি নাম পরীক্ষা করার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, অ্যাপলের ম্যাকিনটোশ অপারেটিং সিস্টেমটিকে ব্যবহারকারী-এজেন্ট শিরোনামে "ম্যাকিনটোশ" হিসাবে ব্র্যান্ড করা হয়েছে, তবে ক্লায়েন্ট ইঙ্গিতগুলিতে "ম্যাকোস" হিসাবে চিহ্নিত করা হয়েছে। নিম্নলিখিত অন্যান্য পার্থক্যগুলি বর্ণনা করে যা আপনি source
মানের উপর ভিত্তি করে দেখতে আশা করতে পারেন:
-
USER_AGENT
:version
ক্ষেত্রটি একটি প্রধান সংস্করণে হ্রাস বা হিমায়িত হতে পারে৷ মনে রাখবেন যে মানটি হিমায়িত হওয়ার কোনও ইঙ্গিত থাকবে না। -
CLIENT_HINTS_LOW_ENTROPY
:version
ক্ষেত্রটি পপুলেট করা হবে না। -
CLIENT_HINTS_HIGH_ENTROPY
:version
ক্ষেত্রটি সম্পূর্ণ সংস্করণে সেট করা হতে পারে৷
মোবাইল
বিজ্ঞাপনের মতো বিষয়বস্তু ছোট পর্দা এবং/অথবা স্পর্শ ইনপুটের জন্য অপ্টিমাইজ করা উচিত কিনা তা নির্দেশ করে। মনে রাখবেন যে এটি অগত্যা ডিভাইসের প্রকারের একটি সূচক নয়, কারণ মোবাইল ব্রাউজারগুলি একটি "ডেস্কটপ সাইট" অনুরোধ করার জন্য কনফিগার করা যেতে পারে৷
স্থাপত্য
প্ল্যাটফর্মের আর্কিটেকচার যেমন "x86" বা "বাহু" শনাক্ত করে।
ক্লায়েন্ট ইঙ্গিতের উপর ভিত্তি করে একটি 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
ফিল্ডে প্রায়ই একটি সম্মিলিত আর্কিটেকচার এবং বিটনেস মান থাকে যেমন Windows এর জন্য "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
: ক্লায়েন্ট ইঙ্গিত পাওয়া যায়, যার মধ্যে অন্তত একটি ক্ষেত্র উচ্চ এনট্রপি হিসাবে শ্রেণীবদ্ধ।