User-Agent (UA) হ্রাস User-Agent স্ট্রিং-এ ভাগ করা শনাক্তকরণ তথ্যকে হ্রাস করে, যা প্যাসিভ ফিঙ্গারপ্রিন্টিংয়ের জন্য ব্যবহার করা যেতে পারে। এখন যেহেতু এই পরিবর্তনগুলি সাধারণ উপলব্ধতার জন্য চালু করা হয়েছে, সমস্ত রিসোর্স অনুরোধের একটি হ্রাসকৃত User-Agent হেডার রয়েছে। ফলস্বরূপ, নির্দিষ্ট Navigator ইন্টারফেস থেকে রিটার্ন মান হ্রাস করা হয়, যার মধ্যে রয়েছে: navigator.userAgent , navigator.appVersion , এবং navigator.platform ।
ওয়েব ডেভেলপারদের User-Agent স্ট্রিং ব্যবহারের জন্য তাদের সাইট কোড পর্যালোচনা করা উচিত। যদি আপনার সাইট ডিভাইস মডেল, প্ল্যাটফর্ম সংস্করণ, অথবা সম্পূর্ণ ব্রাউজার সংস্করণ পড়ার জন্য User-Agent স্ট্রিং পার্স করার উপর নির্ভর করে, তাহলে আপনাকে User-Agent Client Hints API প্রয়োগ করতে হবে।
ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত (UA-CH)
ইউজার-এজেন্ট ক্লায়েন্ট হিন্টস সম্পূর্ণ ইউজার-এজেন্ট ডেটা অ্যাক্সেস করার অনুমতি দেয়, তবে কেবল তখনই যখন সার্ভারগুলি সক্রিয়ভাবে নির্দিষ্ট ডেটার জন্য একটি স্পষ্ট প্রয়োজন ঘোষণা করে।
নিষ্ক্রিয়ভাবে প্রকাশিত ব্যবহারকারীর ডেটা অপসারণের মাধ্যমে, আমরা অনুরোধ শিরোনাম, জাভাস্ক্রিপ্ট API এবং অন্যান্য প্রক্রিয়া দ্বারা ইচ্ছাকৃতভাবে প্রকাশিত তথ্যের পরিমাণ পরিমাপ এবং হ্রাস করতে পারি।
কেন আমাদের হ্রাসকৃত UA এবং UA-CH প্রয়োজন?
ঐতিহাসিকভাবে, ইউজার-এজেন্ট স্ট্রিং প্রতিটি HTTP অনুরোধের সাথে ব্যবহারকারীর ব্রাউজার, অপারেটিং সিস্টেম এবং সংস্করণ সম্পর্কে একটি বৃহৎ স্ট্রিং ডেটা সম্প্রচার করত। এটি দুটি কারণে সমস্যাযুক্ত ছিল:
- বিস্তৃত বিবরণ এবং প্রাচুর্য ব্যবহারকারীর সনাক্তকরণের দিকে পরিচালিত করতে পারে।
- এই তথ্যের ডিফল্ট প্রাপ্যতা গোপন ট্র্যাকিং এর দিকে পরিচালিত করতে পারে।
হ্রাসকৃত UA এবং UA-CH ডিফল্টভাবে শুধুমাত্র মৌলিক তথ্য ভাগ করে ব্যবহারকারীর গোপনীয়তা উন্নত করে।
হ্রাসকৃত ইউজার-এজেন্টের মধ্যে ব্রাউজারের ব্র্যান্ড এবং একটি উল্লেখযোগ্য সংস্করণ অন্তর্ভুক্ত থাকে, যেখান থেকে অনুরোধটি এসেছে (ডেস্কটপ বা মোবাইল), এবং প্ল্যাটফর্ম। আরও ডেটা অ্যাক্সেস করার জন্য, ইউজার-এজেন্ট ক্লায়েন্ট হিন্টস আপনাকে ব্যবহারকারীর ডিভাইস বা শর্তাবলী সম্পর্কে নির্দিষ্ট তথ্য অনুরোধ করার অনুমতি দেয়।
অধিকন্তু, সময়ের সাথে সাথে User-Agent স্ট্রিং দীর্ঘ এবং জটিল হয়ে ওঠে, যার ফলে ত্রুটি-প্রবণ স্ট্রিং পার্সিং শুরু হয়। UA-CH স্ট্রাকচার্ড এবং নির্ভরযোগ্য ডেটা প্রদান করে যা ব্যাখ্যা করা সহজ। UA স্ট্রিং পার্স করে এমন বিদ্যমান কোডটি ভাঙা উচিত নয় (যদিও এটি কম ডেটা ফেরত দেবে), এবং আপনার সাইটের নির্দিষ্ট ক্লায়েন্ট তথ্যের প্রয়োজন হলে আপনাকে UA-CH-এ স্থানান্তর করতে হবে।
হ্রাসকৃত UA এবং UA-CH কীভাবে কাজ করে?
এখানে সংক্ষিপ্ত ইউজার-এজেন্ট স্ট্রিং এবং UA-CH কীভাবে কাজ করে তার একটি সংক্ষিপ্ত উদাহরণ দেওয়া হল। আরও বিস্তারিত উদাহরণের জন্য, ইউজার-এজেন্ট ক্লায়েন্ট হিন্টস ব্যবহার করে ব্যবহারকারীর গোপনীয়তা এবং ডেভেলপার অভিজ্ঞতা উন্নত করা পর্যালোচনা করুন।
একজন ব্যবহারকারী ব্রাউজারটি খুলে অ্যাড্রেস বারে example.com প্রবেশ করান:
ব্রাউজারটি ওয়েবপেজটি লোড করার জন্য একটি অনুরোধ পাঠায়।
- ব্রাউজারটিতে
User-Agentহেডার অন্তর্ভুক্ত থাকে যার সাথে User-Agent স্ট্রিং কমানো হয়। উদাহরণস্বরূপ:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36 ব্রাউজারটি ডিফল্ট ইউজার-এজেন্ট ক্লায়েন্ট হিন্ট হেডারগুলিতে একই তথ্য অন্তর্ভুক্ত করে। উদাহরণস্বরূপ:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- ব্রাউজারটিতে
সার্ভার ব্রাউজারকে অতিরিক্ত ক্লায়েন্ট ইঙ্গিত পাঠাতে বলতে পারে, যেমন ডিভাইস মডেল,
Accept-CHপ্রতিক্রিয়া শিরোনাম সহ। উদাহরণস্বরূপ:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Modelপরবর্তী অনুরোধ শিরোনামগুলিতে সার্ভারে কোন ডেটা ফেরত পাঠানো যাবে তা নির্ধারণ করতে ব্রাউজার নীতি এবং ব্যবহারকারীর কনফিগারেশন প্রয়োগ করে। উদাহরণস্বরূপ:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
ক্লায়েন্টদের জন্য গুরুত্বপূর্ণ পরামর্শ
আপনার প্রাথমিক অনুরোধে যদি ক্লায়েন্ট ইঙ্গিতের একটি নির্দিষ্ট সেটের প্রয়োজন হয়, তাহলে আপনি Critical-CH প্রতিক্রিয়া শিরোনাম ব্যবহার করতে পারেন। Critical-CH মানগুলি Accept-CH দ্বারা অনুরোধ করা মানের একটি উপসেট হতে হবে।
উদাহরণস্বরূপ, প্রাথমিক অনুরোধে Device-Memory এবং Viewport-Width জন্য একটি অনুরোধ অন্তর্ভুক্ত থাকতে পারে, যেখানে Device-Memory গুরুত্বপূর্ণ বলে মনে করা হয়।
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
যদি ওয়েবপেজটি সঠিকভাবে রেন্ডার করার জন্য ব্রাউজারটির একটি গুরুত্বপূর্ণ ইঙ্গিত ( Critical-CH ) প্রয়োজন হয়, তাহলে সার্ভার Accept-CH হেডারের সাহায্যে এই অতিরিক্ত তথ্য চাইতে পারে। তারপর, ব্রাউজারটি গুরুত্বপূর্ণ ইঙ্গিত সহ পৃষ্ঠার জন্য একটি নতুন অনুরোধ পাঠাতে পারে।
সংক্ষেপে, Accept-CH পৃষ্ঠার জন্য আপনার পছন্দসই সমস্ত মান অনুরোধ করে, যখন Critical-CH শুধুমাত্র পৃষ্ঠাটি সঠিকভাবে লোড করার জন্য আপনার অন-লোড থাকা মানগুলির উপসেট অনুরোধ করে। আরও তথ্যের জন্য ক্লায়েন্ট হিন্টস নির্ভরযোগ্যতা স্পেসিফিকেশন দেখুন।
UA-CH API ব্যবহার করে ট্যাবলেট ডিভাইসগুলি সনাক্ত করুন
মোবাইল, ট্যাবলেট এবং ডেস্কটপ ডিভাইসের মধ্যে পার্থক্য ক্রমশ কম স্পষ্ট হয়ে উঠছে এবং গতিশীল ফর্ম ফ্যাক্টরগুলি (স্ক্রিন ভাঁজ করা, ল্যাপটপ এবং ট্যাবলেট মোডের মধ্যে স্যুইচ করা) ক্রমশ সাধারণ হয়ে উঠছে, তাই উপযুক্ত ইউজার ইন্টারফেস উপস্থাপনের জন্য প্রতিক্রিয়াশীল নকশা এবং বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করা যুক্তিযুক্ত।
তবে, ব্রাউজার দ্বারা প্রদত্ত তথ্য User-Agent স্ট্রিং এবং User-Agent ক্লায়েন্ট ইঙ্গিত উভয়ের জন্য একই উৎস থেকে আসে, তাই একই ধরণের যুক্তি কাজ করা উচিত।
উদাহরণস্বরূপ, যদি এই প্যাটার্নটি UA স্ট্রিং-এ চেক করা হয়:
- ফোন প্যাটার্ন:
'Android' + 'Chrome/[.0-9]* Mobile' - ট্যাবলেট প্যাটার্ন:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
মিলিত ডিফল্ট UA-CH হেডার ইন্টারফেসটি পরীক্ষা করা যেতে পারে:
- ফোন প্যাটার্ন:
Sec-CH-UA-Platform: "Android",Sec-CH-UA-Mobile: ?1 - ট্যাবলেট প্যাটার্ন:
Sec-CH-UA-Platform: "Android",Sec-CH-UA-Mobile: ?0
অথবা সমতুল্য জাভাস্ক্রিপ্ট ইন্টারফেস:
- ফোন প্যাটার্ন:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true - ট্যাবলেট প্যাটার্ন:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
হার্ডওয়্যার-নির্দিষ্ট ব্যবহারের ক্ষেত্রে, হাই-এনট্রপি Sec-CH-UA-Model ইঙ্গিতের মাধ্যমে ডিভাইস মডেলের নাম অনুরোধ করা যেতে পারে।
আমি কীভাবে হ্রাসকৃত UA ব্যবহার এবং পরীক্ষা করব?
শুরু করার জন্য, User-Agent স্ট্রিং এর উদাহরণ এবং ব্যবহারের জন্য আপনার সাইটের কোড পর্যালোচনা করুন । যদি আপনার সাইট ডিভাইস মডেল, প্ল্যাটফর্ম সংস্করণ, অথবা সম্পূর্ণ ব্রাউজার সংস্করণ পড়ার জন্য User-Agent স্ট্রিং পার্স করার উপর নির্ভর করে, তাহলে আপনাকে UA-CH API বাস্তবায়ন করতে হবে।
UA-CH API-তে আপডেট করার পর, আপনার পরীক্ষা করা উচিত যাতে আপনি ব্যবহারকারী-এজেন্টের কাছ থেকে প্রত্যাশিত ডেটা পান। পরীক্ষা করার তিনটি উপায় রয়েছে, প্রতিটির জটিলতা বৃদ্ধি পাচ্ছে।
ইউজার-এজেন্ট রিডাকশনের জন্য স্কেল করা প্রাপ্যতা হ্রাসের অর্থ হল সমস্ত Chrome ডিভাইসে সম্পূর্ণরূপে হ্রাস করা UA স্ট্রিং পাঠানো হয়েছে। হ্রাস ২০২২ সালের দ্বিতীয় প্রান্তিকে Chrome-এর একটি মাইনর রিলিজের মাধ্যমে শুরু হয়েছিল।
স্থানীয়ভাবে কাস্টম স্ট্রিং পরীক্ষা করুন
আপনি যদি বিভিন্ন ডিভাইস সিমুলেট করার জন্য কাস্টম ইউজার-এজেন্ট স্ট্রিং ব্যবহার করে আপনার সাইটটি পরীক্ষা করতে চান, --user-agent="Custom string here" কমান্ড-লাইন ফ্ল্যাগ দিয়ে Chrome চালু করুন। কমান্ড-লাইন ফ্ল্যাগ সম্পর্কে আরও জানুন এখানে।
বিকল্পভাবে, Chrome DevTools-এ ডিভাইস এমুলেটর ব্যবহার করুন।
আপনার সাইটের কোডে স্ট্রিংটি রূপান্তর করুন
যদি আপনি আপনার ক্লায়েন্ট-সাইড বা সার্ভার-সাইড কোডে বিদ্যমান Chrome user-agent স্ট্রিংটি প্রক্রিয়া করেন, তাহলে সামঞ্জস্যতা পরীক্ষা করার জন্য আপনি সেই স্ট্রিংটিকে নতুন ফর্ম্যাটে রূপান্তর করতে পারেন। আপনি স্ট্রিংটি ওভাররাইড করে এবং প্রতিস্থাপন করে পরীক্ষা করতে পারেন, অথবা নতুন সংস্করণ তৈরি করে পাশাপাশি পরীক্ষা করতে পারেন।
ক্লায়েন্ট ইঙ্গিত এবং সমালোচনামূলক ইঙ্গিতের জন্য সমর্থন
সার্ভারে তিনটি ডিফল্ট ক্লায়েন্ট ইঙ্গিত ফেরত পাঠানো হয়, যার মধ্যে রয়েছে ব্রাউজারের নাম এবং প্রধান সংস্করণ, একটি বুলিয়ান যা নির্দেশ করে যে ব্রাউজারটি মোবাইল ডিভাইসে আছে কিনা এবং অপারেটিং সিস্টেমের নাম। এগুলি ট্রান্সপোর্ট লেয়ার সিকিউরিটি প্রোটোকল (TLS) হ্যান্ডশেকের পরে পাঠানো হয়। এগুলি ইতিমধ্যেই উপলব্ধ এবং আপনার ব্রাউজারে সমর্থিত।
তবে, এমন সময় আসতে পারে যখন আপনার সাইট রেন্ডার করার জন্য গুরুত্বপূর্ণ তথ্য পুনরুদ্ধারের প্রয়োজন হয়।
গুরুত্বপূর্ণ ইঙ্গিতগুলি অপ্টিমাইজ করুন
ব্রাউজার এবং ওয়েব সার্ভারের মধ্যে একটি নিরাপদ সংযোগ তৈরির প্রথম ধাপ হল একটি TLS হ্যান্ডশেক। কোনও হস্তক্ষেপ ছাড়াই, Critical-CH রেসপন্স হেডারটি এমনভাবে ডিজাইন করা হয়েছিল যাতে ব্রাউজারকে বলা হয় যে যদি প্রথমটি কোনও গুরুত্বপূর্ণ ইঙ্গিত ছাড়াই পাঠানো হয় তবে তাৎক্ষণিকভাবে পুনরায় চেষ্টা করতে হবে।

Sec-CH-UA-Model জন্য ইঙ্গিতটি দুবার অনুরোধ করা হয়েছে: একবার Accept-CH সহ ক্লায়েন্ট ইঙ্গিত হিসাবে এবং আবার Critical-CH সহ একটি গুরুত্বপূর্ণ ইঙ্গিত হিসাবে। সমালোচনামূলক ইঙ্গিতগুলি ( Critical-CH header ) অপ্টিমাইজ করার জন্য, আপনাকে এই হ্যান্ডশেকটি আটকাতে হবে এবং ক্লায়েন্ট ইঙ্গিতগুলির জন্য একটি মডেল প্রদান করতে হবে। এই পদক্ষেপগুলি জটিল হতে পারে এবং উন্নত জ্ঞানের প্রয়োজন হতে পারে।
ACCEPT_CH HTTP/2 এবং HTTP/3 ফ্রেম , TLS ALPS এক্সটেনশনের সাথে মিলিত হয়ে, একটি সংযোগ-স্তরের অপ্টিমাইজেশন যা প্রথম HTTP অনুরোধের জন্য সার্ভারের ক্লায়েন্ট ইঙ্গিত পছন্দগুলি সময়মতো সরবরাহ করে। এর জন্য জটিল কনফিগারেশন প্রয়োজন, এবং আমরা শুধুমাত্র সত্যিকারের গুরুত্বপূর্ণ তথ্যের জন্য এটি ব্যবহার করার পরামর্শ দিই।
BoringSSL (OpenSSL এর একটি অংশ) আপনাকে Chromium-এ Google-এর পরীক্ষামূলক বৈশিষ্ট্যগুলির সাথে কাজ করতে সাহায্য করে। বর্তমানে, ALPS শুধুমাত্র BoringSSL-এ বাস্তবায়িত হয় ।
যদি আপনার সমালোচনামূলক ইঙ্গিত ব্যবহার করার প্রয়োজন হয়, তাহলে সমালোচনামূলক ইঙ্গিত নির্ভরযোগ্যতা এবং অপ্টিমাইজেশন সম্পর্কিত আমাদের নির্দেশিকাটি দেখুন।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
Accept-CH হেডারের মাধ্যমে নির্দিষ্ট করা ইঙ্গিতগুলি কতক্ষণের মধ্যে পাঠানো হবে?
Accept-CH হেডারের মাধ্যমে নির্দিষ্ট করা ইঙ্গিতগুলি ব্রাউজার সেশনের সময়কালের জন্য অথবা ভিন্ন ইঙ্গিতের সেট নির্দিষ্ট না হওয়া পর্যন্ত পাঠানো হবে।
UA-CH কি HTTP/2 এবং HTTP/3 এর সাথে কাজ করে?
UA-CH HTTP/2 এবং HTTP/3 উভয় সংযোগের সাথেই কাজ করে।
হাই-এনট্রপি UA-CH অ্যাক্সেস করার জন্য কি সাবডোমেন (এবং CNAME) এর জন্য একটি শীর্ষ-স্তরের পৃষ্ঠা Permissions-Policy প্রয়োজন?
হাই-এনট্রপি UA-CH অন রিকোয়েস্ট হেডারগুলি ক্রস-অরিজিন অনুরোধের ক্ষেত্রে সীমাবদ্ধ, ডিএনএস সাইডে সেই অরিজিনটি কীভাবে সংজ্ঞায়িত করা হয়েছে তা নির্বিশেষে। যেকোনো ক্রস-অরিজিন সাবরিসোর্সের জন্য ডেলিগেশন অবশ্যই Permissions-Policy মাধ্যমে পরিচালনা করতে হবে অথবা ক্রস-অরিজিন প্রসঙ্গে কার্যকর করা জাভাস্ক্রিপ্টের মাধ্যমে প্রাপ্ত করতে হবে।
ইউজার-এজেন্ট রিডাকশন বট সনাক্তকরণকে কীভাবে প্রভাবিত করে?
ক্রোমের ইউজার-এজেন্ট স্ট্রিং-এ পরিবর্তন সরাসরি বট যে ইউজার-এজেন্ট স্ট্রিং পাঠাতে চায় তার উপর প্রভাব ফেলে না।
ক্রোম যে তথ্য কমিয়ে পাঠায় তা প্রতিফলিত করার জন্য বটরা তাদের নিজস্ব স্ট্রিং আপডেট করতে পারে, কিন্তু এটি সম্পূর্ণরূপে তাদের বাস্তবায়নের পছন্দ। ক্রোম এখনও একই ইউজার-এজেন্ট ফর্ম্যাট পাঠাচ্ছে, এবং যেসব বট ক্রোম ইউজার-এজেন্ট স্ট্রিংয়ের শেষে তাদের নিজস্ব শনাক্তকারী যুক্ত করে, তারা তা চালিয়ে যেতে পারে।
নির্দিষ্ট বট সম্পর্কে যেকোনো উদ্বেগের জন্য, ব্যবহারকারী-এজেন্ট স্ট্রিং পরিবর্তন করার কোনও পরিকল্পনা আছে কিনা তা জানতে সরাসরি মালিকদের সাথে যোগাযোগ করা মূল্যবান হতে পারে।
অংশগ্রহণ করুন এবং মতামত শেয়ার করুন
- অরিজিন ট্রায়াল : পূর্ববর্তী অরিজিন ট্রায়াল সম্পর্কে আপনার মতামত শেয়ার করুন ।
- ডেমো : আমাদের ইউজার-এজেন্ট রিডাকশনের ডেমো ব্যবহার করে দেখুন।
- GitHub : UA-CH ব্যাখ্যাকারী পড়ুন, প্রশ্ন উত্থাপন করুন এবং আলোচনা অনুসরণ করুন ।
আরও জানুন
- ব্যবহারকারীর গোপনীয়তা এবং ডেভেলপার অভিজ্ঞতা উন্নত করা : ওয়েব ডেভেলপারদের জন্য একটি সারসংক্ষেপ
- UA স্ট্রিং থেকে UA-CH এ মাইগ্রেট করুন : ওয়েব ডেভেলপারদের জন্য একটি টিউটোরিয়াল
- প্রাইভেসি স্যান্ডবক্সে খনন করা