ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত দিয়ে ব্যবহারকারীর গোপনীয়তা এবং বিকাশকারীর অভিজ্ঞতা উন্নত করা

ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিতগুলি হল ক্লায়েন্ট ইঙ্গিত API-এর একটি নতুন সম্প্রসারণ, যা বিকাশকারীদেরকে একটি গোপনীয়তা-সংরক্ষণ এবং এর্গোনমিক উপায়ে ব্যবহারকারীর ব্রাউজার সম্পর্কে তথ্য অ্যাক্সেস করতে সক্ষম করে৷

ক্লায়েন্ট ইঙ্গিতগুলি বিকাশকারীদের সক্রিয়ভাবে ব্যবহারকারীর ডিভাইস বা শর্তাবলী সম্পর্কে তথ্যের অনুরোধ করতে সক্ষম করে, ব্যবহারকারী-এজেন্ট (UA) স্ট্রিং থেকে এটিকে পার্স করার প্রয়োজন না করে। এই বিকল্প রুট প্রদান করা শেষ পর্যন্ত ব্যবহারকারী-এজেন্ট স্ট্রিং গ্রানুলারিটি হ্রাস করার প্রথম ধাপ।

পরিবর্তে ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিতগুলি ব্যবহার করতে ব্যবহারকারী-এজেন্ট স্ট্রিং পার্স করার উপর নির্ভর করে আপনার বিদ্যমান কার্যকারিতা কীভাবে আপডেট করবেন তা শিখুন।

পটভূমি

যখন ওয়েব ব্রাউজারগুলি অনুরোধ করে তখন তারা ব্রাউজার এবং এর পরিবেশ সম্পর্কে তথ্য অন্তর্ভুক্ত করে যাতে সার্ভারগুলি বিশ্লেষণ সক্ষম করতে পারে এবং প্রতিক্রিয়া কাস্টমাইজ করতে পারে। এটি 1996 সালে (HTTP/1.0-এর জন্য RFC 1945) সম্পূর্ণভাবে সংজ্ঞায়িত করা হয়েছিল, যেখানে আপনি User-Agent স্ট্রিং এর মূল সংজ্ঞা খুঁজে পেতে পারেন, যার মধ্যে একটি উদাহরণ রয়েছে:

User-Agent: CERN-LineMode/2.15 libwww/2.17b3

এই শিরোনামটি তাৎপর্য অনুসারে পণ্য (যেমন ব্রাউজার বা লাইব্রেরি) এবং একটি মন্তব্য (যেমন সংস্করণ) নির্দিষ্ট করার উদ্দেশ্যে করা হয়েছিল।

ইউজার-এজেন্ট স্ট্রিং এর অবস্থা

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

Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4076.0 Mobile Safari/537.36

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

সম্ভাব্য মানগুলির নিছক বৈচিত্র্যের সাথে এই পরামিতিগুলির সংমিশ্রণ মানে ব্যবহারকারী-এজেন্ট স্ট্রিংটিতে পর্যাপ্ত তথ্য থাকতে পারে যাতে পৃথক ব্যবহারকারীদের স্বতন্ত্রভাবে সনাক্ত করা যায়।

ব্যবহারকারী-এজেন্ট স্ট্রিং অনেক বৈধ ব্যবহারের ক্ষেত্রে সক্ষম করে, এবং ডেভেলপার এবং সাইটের মালিকদের জন্য একটি গুরুত্বপূর্ণ উদ্দেশ্য পরিবেশন করে। যাইহোক, এটাও গুরুত্বপূর্ণ যে ব্যবহারকারীদের গোপনীয়তা গোপন ট্র্যাকিং পদ্ধতির বিরুদ্ধে সুরক্ষিত, এবং ডিফল্টরূপে UA তথ্য পাঠানো সেই লক্ষ্যের বিরুদ্ধে যায়।

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

নতুন ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত উপস্থাপন করা হচ্ছে

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

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

সার্ভার একটি হেডারের মাধ্যমে নির্দিষ্ট ক্লায়েন্ট ইঙ্গিতগুলির জন্য জিজ্ঞাসা করে:

⬇️ সার্ভার থেকে প্রতিক্রিয়া

Accept-CH: Viewport-Width, Width

অথবা একটি মেটা ট্যাগ:

<meta http-equiv="Accept-CH" content="Viewport-Width, Width" />

ব্রাউজার পরবর্তী অনুরোধে নিম্নলিখিত শিরোনামগুলি ফেরত পাঠাতে বেছে নিতে পারে:

⬆️ পরবর্তী অনুরোধ

Viewport-Width: 460
Width: 230

সার্ভার তার প্রতিক্রিয়া পরিবর্তন করতে বেছে নিতে পারে, উদাহরণস্বরূপ একটি উপযুক্ত রেজোলিউশনে ছবি পরিবেশন করে।

ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত Sec-CH-UA উপসর্গ সহ বৈশিষ্ট্যের পরিসর প্রসারিত করে যা Accept-CH সার্ভার প্রতিক্রিয়া শিরোনামের মাধ্যমে নির্দিষ্ট করা যেতে পারে। সমস্ত বিবরণের জন্য, ব্যাখ্যাকারী দিয়ে শুরু করুন এবং তারপরে সম্পূর্ণ প্রস্তাবে ডুব দিন।

Chromium 89 থেকে ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত

89 সংস্করণ থেকে Chrome-এ ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিতগুলি ডিফল্ট সক্রিয় করা হয়েছে৷

ডিফল্টরূপে, ব্রাউজারটি ব্রাউজার ব্র্যান্ড, উল্লেখযোগ্য / প্রধান সংস্করণ, প্ল্যাটফর্ম এবং একটি সূচক প্রদান করে যদি ক্লায়েন্ট একটি মোবাইল ডিভাইস হয়:

⬆️ সকল অনুরোধ

Sec-CH-UA: "Chromium";v="93", "Google Chrome";v="93", " Not;A Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "macOS"

ব্যবহারকারী-এজেন্ট প্রতিক্রিয়া এবং অনুরোধ শিরোনাম

⬇️ প্রতিক্রিয়া Accept-CH
⬆️ অনুরোধ শিরোনাম
⬆️ অনুরোধ
উদাহরণ মান
বর্ণনা
Sec-CH-UA "Chromium";v="84",
"Google Chrome";v="84"
ব্রাউজার ব্র্যান্ডের তালিকা এবং তাদের উল্লেখযোগ্য সংস্করণ।
Sec-CH-UA-Mobile ?1 বুলিয়ান নির্দেশ করে যে ব্রাউজার একটি মোবাইল ডিভাইসে আছে কিনা ( ?1 সত্যের জন্য) বা না ( ?0 মিথ্যার জন্য)।
Sec-CH-UA-Full-Version "84.0.4143.2" ব্রাউজারের জন্য সম্পূর্ণ সংস্করণ।
Sec-CH-UA-Full-Version-List "Chromium";v="84.0.4143.2",
"Google Chrome";v="84.0.4143.2"
ব্রাউজার ব্র্যান্ডের তালিকা এবং তাদের সম্পূর্ণ সংস্করণ।
Sec-CH-UA-Platform "Android" ডিভাইসের জন্য প্ল্যাটফর্ম, সাধারণত অপারেটিং সিস্টেম (OS)।
Sec-CH-UA-Platform-Version "10" প্ল্যাটফর্ম বা OS এর সংস্করণ।
Sec-CH-UA-Arch "arm" ডিভাইসের জন্য অন্তর্নিহিত আর্কিটেকচার। যদিও এটি পৃষ্ঠা প্রদর্শনের জন্য প্রাসঙ্গিক নাও হতে পারে, সাইটটি এমন একটি ডাউনলোড অফার করতে চাইতে পারে যা সঠিক বিন্যাসে ডিফল্ট।
Sec-CH-UA-Model "Pixel 3" ডিভাইস মডেল।
Sec-CH-UA-Bitness "64" অন্তর্নিহিত আর্কিটেকচারের বিটনেস (অর্থাৎ, একটি পূর্ণসংখ্যা বা মেমরি ঠিকানার বিটের আকার)

উদাহরণ বিনিময়

একটি উদাহরণ বিনিময় এই মত দেখাবে:

⬆️ ব্রাউজার থেকে প্রাথমিক অনুরোধ
ব্রাউজারটি সাইট থেকে /downloads পৃষ্ঠার অনুরোধ করছে এবং তার ডিফল্ট মৌলিক ব্যবহারকারী-এজেন্ট পাঠাচ্ছে।

GET /downloads HTTP/1.1
Host: example.site

Sec-CH-UA: "Chromium";v="93", "Google Chrome";v="93", " Not;A Brand";v="99"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"

⬇️ সার্ভার থেকে প্রতিক্রিয়া
সার্ভার পৃষ্ঠাটি ফেরত পাঠায় এবং অতিরিক্তভাবে সম্পূর্ণ ব্রাউজার সংস্করণ এবং প্ল্যাটফর্মের জন্য জিজ্ঞাসা করে।

HTTP/1.1 200 OK
Accept-CH: Sec-CH-UA-Full-Version-List

⬆️ পরবর্তী অনুরোধ
ব্রাউজার সার্ভারকে অতিরিক্ত তথ্যে অ্যাক্সেস দেয় এবং পরবর্তী সমস্ত অনুরোধে অতিরিক্ত ইঙ্গিতগুলি ফেরত পাঠায়।

GET /downloads/app1 HTTP/1.1
Host: example.site

Sec-CH-UA: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Full-Version-List: " Not A;Brand";v="99.0.0.0", "Chromium";v="98.0.4738.0", "Google Chrome";v="98.0.4738.0"
Sec-CH-UA-Platform: "Android"

জাভাস্ক্রিপ্ট API

শিরোনামগুলির পাশাপাশি, ব্যবহারকারী-এজেন্টকে জাভাস্ক্রিপ্টে navigator.userAgentData মাধ্যমেও অ্যাক্সেস করা যেতে পারে। ডিফল্ট Sec-CH-UA , Sec-CH-UA-Mobile , এবং Sec-CH-UA-Platform হেডার তথ্য যথাক্রমে brands এবং mobile বৈশিষ্ট্যগুলির মাধ্যমে অ্যাক্সেস করা যেতে পারে:

// Log the brand data
console.log(navigator.userAgentData.brands);

// output
[
  {
    brand: 'Chromium',
    version: '93',
  },
  {
    brand: 'Google Chrome',
    version: '93',
  },
  {
    brand: ' Not;A Brand',
    version: '99',
  },
];

// Log the mobile indicator
console.log(navigator.userAgentData.mobile);

// output
false;

// Log the platform value
console.log(navigator.userAgentData.platform);

// output
"macOS";

অতিরিক্ত মান getHighEntropyValues() কলের মাধ্যমে অ্যাক্সেস করা হয়। "উচ্চ এনট্রপি" শব্দটি তথ্য এনট্রপির একটি রেফারেন্স, অন্য কথায় - এই মানগুলি ব্যবহারকারীর ব্রাউজার সম্পর্কে যে পরিমাণ তথ্য প্রকাশ করে। অতিরিক্ত শিরোনামগুলির জন্য অনুরোধ করার মতো, এটি ব্রাউজারে রয়েছে, কোন মানগুলি, যদি থাকে, ফেরত দেওয়া হয়৷

// Log the full user-agent data
navigator
  .userAgentData.getHighEntropyValues(
    ["architecture", "model", "bitness", "platformVersion",
     "fullVersionList"])
  .then(ua => { console.log(ua) });

// output
{
   "architecture":"x86",
   "bitness":"64",
   "brands":[
      {
         "brand":" Not A;Brand",
         "version":"99"
      },
      {
         "brand":"Chromium",
         "version":"98"
      },
      {
         "brand":"Google Chrome",
         "version":"98"
      }
   ],
   "fullVersionList":[
      {
         "brand":" Not A;Brand",
         "version":"99.0.0.0"
      },
      {
         "brand":"Chromium",
         "version":"98.0.4738.0"
      },
      {
         "brand":"Google Chrome",
         "version":"98.0.4738.0"
      }
   ],
   "mobile":false,
   "model":"",
   "platformVersion":"12.0.1"
}

ডেমো

আপনি user-agent-client-hints.glitch.me এ আপনার নিজের ডিভাইসে শিরোনাম এবং জাভাস্ক্রিপ্ট API উভয়ই চেষ্টা করে দেখতে পারেন।

ইঙ্গিত লাইফ-টাইম এবং রিসেটিং

Accept-CH শিরোনামের মাধ্যমে নির্দিষ্ট করা ইঙ্গিতগুলি ব্রাউজার সেশনের সময়কালের জন্য বা ইঙ্গিতের একটি ভিন্ন সেট নির্দিষ্ট না হওয়া পর্যন্ত পাঠানো হবে।

এর মানে যদি সার্ভার পাঠায়:

⬇️ প্রতিক্রিয়া

Accept-CH: Sec-CH-UA-Full-Version-List

তারপর ব্রাউজারটি ব্রাউজার বন্ধ না হওয়া পর্যন্ত সেই সাইটের জন্য সমস্ত অনুরোধে Sec-CH-UA-Full-Version-List শিরোনাম পাঠাবে।

⬆️ পরবর্তী অনুরোধ

Sec-CH-UA-Full-Version-List: " Not A;Brand";v="99.0.0.0", "Chromium";v="98.0.4738.0", "Google Chrome";v="98.0.4738.0"

যাইহোক, যদি অন্য একটি Accept-CH শিরোনাম প্রাপ্ত হয় তবে এটি ব্রাউজারটি যে বর্তমান ইঙ্গিতগুলি পাঠাচ্ছে তা সম্পূর্ণরূপে প্রতিস্থাপন করবে।

⬇️ প্রতিক্রিয়া

Accept-CH: Sec-CH-UA-Bitness

⬆️ পরবর্তী অনুরোধ

Sec-CH-UA-Platform: "64"

পূর্বে চাওয়া Sec-CH-UA-Full-Version-List পাঠানো হবে না

Accept-CH শিরোনামটিকে সেই পৃষ্ঠার জন্য কাঙ্খিত ইঙ্গিতগুলির সম্পূর্ণ সেট নির্দিষ্ট করে বলে মনে করা ভাল, যার অর্থ ব্রাউজারটি সেই পৃষ্ঠার সমস্ত উপ-সম্পদগুলির জন্য নির্দিষ্ট ইঙ্গিত পাঠায়৷ যদিও ইঙ্গিতগুলি পরবর্তী নেভিগেশনে টিকে থাকবে, সাইটটির নির্ভর করা উচিত নয় বা অনুমান করা উচিত নয় যে সেগুলি বিতরণ করা হবে৷

আপনি প্রতিক্রিয়াতে একটি ফাঁকা Accept-CH পাঠিয়ে ব্রাউজার দ্বারা প্রেরিত সমস্ত ইঙ্গিতগুলি কার্যকরভাবে পরিষ্কার করতে এটি ব্যবহার করতে পারেন। ব্যবহারকারী আপনার পছন্দগুলি রিসেট করছে বা আপনার সাইট থেকে সাইন আউট করছে এমন যেকোনো জায়গায় এটি যোগ করার কথা বিবেচনা করুন।

এই প্যাটার্নটি <meta http-equiv="Accept-CH" …> ট্যাগের মাধ্যমে কীভাবে ইঙ্গিত কাজ করে তাও মেলে। অনুরোধ করা ইঙ্গিত শুধুমাত্র পৃষ্ঠা দ্বারা শুরু করা অনুরোধে পাঠানো হবে এবং পরবর্তী কোনো নেভিগেশনে নয়।

ইঙ্গিত সুযোগ এবং ক্রস-অরিজিন অনুরোধ

ডিফল্টরূপে, ক্লায়েন্ট ইঙ্গিত শুধুমাত্র একই-অরিজিন অনুরোধে পাঠানো হবে। তার মানে আপনি যদি https://example.com এ নির্দিষ্ট ইঙ্গিত চান, কিন্তু আপনি যে সংস্থানগুলিকে অপ্টিমাইজ করতে চান সেগুলি https://downloads.example.com এ থাকলে তারা কোনও ইঙ্গিত পাবে না

ক্রস-অরিজিন অনুরোধে ইঙ্গিত দেওয়ার জন্য প্রতিটি ইঙ্গিত এবং উত্স একটি Permissions-Policy শিরোনাম দ্বারা নির্দিষ্ট করা আবশ্যক। একটি ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত এটি প্রয়োগ করার জন্য, আপনাকে ইঙ্গিত ছোট হাতের অক্ষর করতে হবে এবং sec- প্রিফিক্সটি সরাতে হবে। যেমন:

⬇️ example.com থেকে প্রতিক্রিয়া

Accept-CH: Sec-CH-UA-Platform-Version, DPR
Permissions-Policy: ch-ua-platform-version=(self "downloads.example.com"),
                    ch-dpr=(self "cdn.provider" "img.example.com");

⬆️ downloads.example.com এ অনুরোধ করুন

Sec-CH-UA-Platform-Version: "10"

⬆️ cdn.provider বা img.example.com এ অনুরোধ

DPR: 2

ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিতগুলি কোথায় ব্যবহার করবেন?

দ্রুত উত্তর হল যে আপনি যেকোন দৃষ্টান্তগুলিকে রিফ্যাক্টর করতে হবে যেখানে আপনি ব্যবহারকারী-এজেন্ট শিরোনাম পার্স করছেন বা যেকোন জাভাস্ক্রিপ্ট কল ব্যবহার করছেন যা একই তথ্য অ্যাক্সেস করে (যেমন navigator.userAgent , navigator.appVersion , বা navigator.platform ) পরিবর্তে ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত ব্যবহার করুন।

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

এই সতর্কতাগুলি মাথায় রেখে, ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত রেপো সাইটের জন্য কিছু বৈধ ব্যবহারের ক্ষেত্রে তালিকাভুক্ত করে

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

বর্তমান সাইটগুলিতে অযৌক্তিক ব্যাঘাত ঘটাতে না গিয়ে বিদ্যমান ব্যবহারকারী-এজেন্ট স্ট্রিং দ্বারা উদ্ভাসিত শনাক্তকরণ তথ্যের পরিমাণ হ্রাস করে ওয়েবে গোপন ট্র্যাকিংয়ের ক্ষমতা কমিয়ে আনার পরিকল্পনা। ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিতগুলি প্রবর্তন এখন আপনাকে ব্যবহারকারী-এজেন্ট স্ট্রিংগুলিতে কোনও পরিবর্তন করার আগে নতুন ক্ষমতা বোঝার এবং পরীক্ষা করার সুযোগ দেয়৷

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

আপনি Chrome 93 থেকে about://flags/#reduce-user-agent পতাকা সক্ষম করে এর একটি সংস্করণ পরীক্ষা করতে পারেন (দ্রষ্টব্য: Chrome 84 সংস্করণে এই পতাকাটির নামকরণ করা হয়েছিল about://flags/#freeze-user-agent 92)। এটি সামঞ্জস্যের কারণে ঐতিহাসিক এন্ট্রি সহ একটি স্ট্রিং ফিরিয়ে দেবে, কিন্তু স্যানিটাইজড স্পেসিফিকেশন সহ। উদাহরণস্বরূপ, এরকম কিছু:

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36

আনস্প্ল্যাশে সের্গেই জোলকিনের থাম্বনেল