user-agent spoofing কী
প্রতিটি HTTP client নিজের সম্পর্কে একটি User-Agent header পাঠাতে পারে: browser-এর নাম ও version, crawler-এর নাম, একটি library identifier। এই header self-reported। HTTP-এ এমন কিছু নেই যা এটিকে সত্য কি না যাচাই করে, তাই যেকোনো client যেকোনো value পাঠাতে পারে। user-agent spoofing বলতে বোঝায় এমন একটি value পাঠানো, যা client-কে ভুলভাবে উপস্থাপন করে, যেমন:
- একটি automation script নিজেকে বর্তমান desktop browser হিসেবে উপস্থাপন করা,
- একটি scraper নিজেকে সুপরিচিত search crawler বলে দাবি করা, যাতে সুবিধাজনক treatment পায়,
- একটি AI agent generic browser string ব্যবহার করা, যাতে তাকে একজন person-এর মতো扱য়া হয়।
এটি কেন গুরুত্বপূর্ণ
অনেক system এখনও user-agent string থেকে সিদ্ধান্ত নেয়: পরিচিত crawler-দের allowlisting করা, bot-দের জন্য ভিন্ন content পরিবেশন করা, বা analytics থেকে automation বাদ দেওয়া। এই প্রতিটি decision header-এর দুর্বলতা উত্তরাধিকারসূত্রে পায়। যদি কোনো policy বলে "crawler X বলে দাবি করে এমন যেকোনো কিছুকে allow করো", তাহলে crawler X-এর string কপি করা সবাইকে allow করা হয়।
AI agent traffic গ্রহণ করা application-এর ক্ষেত্রে, সময়ের সঙ্গে এটি আরও গুরুত্বপূর্ণ হয়ে ওঠে। agent-রা increasingly বাস্তব browser বা headless browser framework-এর ভিতরে চলে, তাই তাদের user-agent string প্রায় human browser-এর মতোই দেখায়। অন্যরা সৎভাবে নিজেদের identify করে। কেবল header দেখে আপনি কোনটি কোনটি তা বলতে পারবেন না। ওয়েব ট্র্যাফিক AI agent থেকে আসে কি না তা কীভাবে বোঝা যায় নিয়ে আমাদের post-এ ভালো কাজ করে এমন signal-গুলো দেখানো হয়েছে।
header-এর চেয়ে ভালো প্রমাণ
- Cryptographic signature. HTTP Message Signatures এবং Web Bot Auth work-এর মাধ্যমে, client প্রমাণ করে যে তার কাছে operator যে key প্রকাশ করেছে, সেটি রয়েছে। কপি করা user-agent string কোনো signature পুনরুত্পাদন করতে পারে না।
- Operator-published verification. কিছু crawler operator IP range প্রকাশ করে বা reverse DNS check সমর্থন করে, যা header একা থাকলে impersonation-কে আরও কঠিন করে তোলে। Google তার crawler-গুলির জন্য একটি reverse DNS and IP range check নথিভুক্ত করেছে, Microsoft একটি Verify Bingbot tool দেয়, এবং OpenAI তার প্রতিটি bot-এর জন্য IP address file প্রকাশ করে। Anthropic-এর তার hosted browser agent-এর জন্য guidance স্পষ্টভাবে বলে যে যে কেউ একই User-Agent header পাঠাতে পারে এবং তার প্রকাশিত IP address পরীক্ষা করার পরামর্শ দেয়।
- Consistency check. দাবি করা client-কে protocol detail এবং interaction signal-এর সাথে তুলনা করলে দেখা যেতে পারে কখন কোনো claim মেলে না, যদিও এটি inference তৈরি করে, proof নয়।
- Credential. API-এর ক্ষেত্রে, একটি API key বা token আপনাকে বলে কে call করছে, header কী বলছে তা নির্বিশেষে।
সাধারণ ভুল ধারণা
- "Browser user-agent মানেই human." Headless browser এবং agent framework নিয়মিতভাবে browser string পাঠায়।
- "Crawler user-agent মানেই crawler." Signature বা operator verification check ছাড়া এটি কেবল একটি claim।
- "Spoofing সবসময় malicious." কিছু legitimate tool broken page পরিবেশন এড়াতে generic string পাঠায়। Spoofing হল header-কে কম গুরুত্ব দেওয়ার একটি কারণ, খারাপ intent-এর proof নয়।
Proof of Actor user-agent string-কে কীভাবে treat করে
Proof of Actor একটি user-agent claim-কে declared evidence হিসেবে record করে: client যা বলেছে, যা সত্য হতেও পারে আবার নাও পারে। এটি নিজে থেকে কোনো declaration-কে verified-এ উন্নীত করে না। কোনো request-এর একমাত্র identifying evidence যদি crawler user-agent string হয়, তবে সেটিকে সেই অনুযায়ী label করা হয়, এবং evidence অপর্যাপ্ত হলে result Unknown হয়, confident guess নয়। তারপর Route-এ আপনার policy verified signed agent এবং self-declared agent-কে ভিন্নভাবে treat করতে পারে, উদাহরণস্বরূপ read-only route-এ দুটিকেই allow করা, কিন্তু declared one-এর ক্ষেত্রে আরও কড়া limit প্রয়োগ করা।
দেখুন evidence base কীভাবে কাজ করে বা early access-এর জন্য apply করুন।
Sources
- RFC 9110: HTTP Semantics, User-Agent: headerটি client-এর দ্বারা self-reported
- Google: Verifying Google's crawlers and fetchers: reverse DNS এবং published IP range check
- Microsoft Bing: Verify Bingbot tool: কোনো IP address Bingbot-এর অন্তর্ভুক্ত কি না তা পরীক্ষা করা
- OpenAI: Overview of OpenAI Crawlers: user agent এবং published IP address file
- Anthropic: how Anthropic-hosted browsers identify themselves: সতর্কবার্তা যে User-Agent header copy করা যায়