যন্ত্রের প্রকার, ব্রাউজার পরিবারের এবং অপারেটিং সিস্টেম দ্বারা ফিল্টার করার বিকল্প সহ বাস্তবসম্মত ব্রাউজার ইউজার এজেন্ট স্ট্রিং তৈরি করুন। ওয়েব ডেভেলপমেন্ট টেস্টিং এবং সামঞ্জস্য পরীক্ষা করার জন্য নিখুঁত।
ওয়েব ডেভেলপমেন্ট পরীক্ষার জন্য র্যান্ডম, বাস্তবসম্মত ব্রাউজার ইউজার এজেন্ট স্ট্রিং তৈরি করুন।
একটি ইউজার এজেন্ট স্ট্রিং হল একটি নির্দিষ্ট টেক্সট শনাক্তকারী যা ওয়েব ব্রাউজার এবং অন্যান্য অ্যাপ্লিকেশনগুলি ওয়েবসাইটগুলিকে নিজেদের পরিচয় দিতে পাঠায়। এই স্ট্রিংটি সাধারণত ব্রাউজার, অপারেটিং সিস্টেম, ডিভাইসের ধরন এবং ব্যবহৃত রেন্ডারিং ইঞ্জিন সম্পর্কে তথ্য ধারণ করে। ওয়েব ডেভেলপার এবং পরীক্ষকদের জন্য, বিভিন্ন বাস্তবসম্মত ইউজার এজেন্ট স্ট্রিংগুলিতে প্রবেশাধিকার থাকা অত্যন্ত গুরুত্বপূর্ণ, যাতে তারা বিভিন্ন প্ল্যাটফর্মে ওয়েবসাইটের সামঞ্জস্য, প্রতিক্রিয়া এবং কার্যকারিতা পরীক্ষা করতে পারে।
এই র্যান্ডম ইউজার এজেন্ট জেনারেটর টুলটি আপনার নির্বাচিত প্যারামিটারের ভিত্তিতে প্রামাণিক দেখানোর মতো ইউজার এজেন্ট স্ট্রিং তৈরি করে। আপনি ডিভাইসের ধরন (ডেস্কটপ বা মোবাইল), ব্রাউজার পরিবার (ক্রোম, ফায়ারফক্স, সাফারি বা এজ) এবং অপারেটিং সিস্টেম দ্বারা ফিল্টার করতে পারেন যাতে ইউজার এজেন্টগুলি আপনার পরীক্ষার প্রয়োজনীয়তার সাথে মেলে। টুলটি একটি সহজ ইন্টারফেস প্রদান করে, এক ক্লিকে তৈরি করা স্ট্রিংটি কপি করার এবং অবিলম্বে নতুন র্যান্ডম স্ট্রিং তৈরি করার বিকল্প সহ।
ইউজার এজেন্ট স্ট্রিংগুলি ব্রাউজার এবং প্ল্যাটফর্ম অনুসারে নির্দিষ্ট প্যাটার্ন অনুসরণ করে, তবে সাধারণত এতে কয়েকটি সাধারণ উপাদান থাকে:
এখানে প্রধান ব্রাউজারের জন্য সাধারণ ইউজার এজেন্ট গঠনের একটি বিশ্লেষণ:
1Mozilla/5.0 (প্ল্যাটফর্ম; বিস্তারিত) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/সংস্করণ Safari/537.36
2
1Mozilla/5.0 (প্ল্যাটফর্ম; rv:geckoversion) Gecko/geckotrail Firefox/ফায়ারফক্সসংস্করণ
2
1Mozilla/5.0 (প্ল্যাটফর্ম) AppleWebKit/webkitversion (KHTML, like Gecko) Version/safariversion Safari/safariversion
2
1Mozilla/5.0 (প্ল্যাটফর্ম) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion
2
প্ল্যাটফর্মের অংশটি ডেস্কটপ এবং মোবাইল ডিভাইসের মধ্যে উল্লেখযোগ্যভাবে পরিবর্তিত হয়:
ডেস্কটপ উদাহরণ:
Windows NT 10.0; Win64; x64
Macintosh; Intel Mac OS X 10_15_7
X11; Linux x86_64
মোবাইল উদাহরণ:
Linux; Android 12; SM-G998B
iPhone; CPU iPhone OS 15_4 like Mac OS X
ডেস্কটপ ইউজার এজেন্টগুলি সাধারণত নির্দিষ্ট অপারেটিং সিস্টেমের তথ্য, স্থাপত্যের বিস্তারিত (যেমন x86_64 বা Win64), এবং কখনও কখনও ভাষার পছন্দগুলি অন্তর্ভুক্ত করে। তারা মোবাইল ইউজার এজেন্টগুলির তুলনায় ব্রাউজারগুলির মধ্যে আরও বেশি সামঞ্জস্যপূর্ণ থাকে।
মোবাইল ইউজার এজেন্টগুলিতে ডিভাইস মডেলের তথ্য, মোবাইল অপারেটিং সিস্টেমের সংস্করণ এবং প্রায়শই শেষে "মোবাইল" শব্দটি অন্তর্ভুক্ত থাকে। আইওএস ডিভাইসে মোবাইল সাফারি "iPhone" বা "iPad" শনাক্তকারীগুলি অন্তর্ভুক্ত করবে, যখন অ্যান্ড্রয়েড ডিভাইসগুলিতে প্রস্তুতকারক এবং মডেল নম্বর অন্তর্ভুক্ত থাকে।
প্রতিটি ব্রাউজার বিভিন্ন সংস্করণ প্যাটার্ন অনুসরণ করে:
র্যান্ডম ইউজার এজেন্ট জেনারেশন ওয়েব ডেভেলপমেন্ট এবং পরীক্ষায় কয়েকটি গুরুত্বপূর্ণ প্রয়োগ রয়েছে:
ক্রস-ব্রাউজার সামঞ্জস্য পরীক্ষা: আপনার ওয়েবসাইটটি বিভিন্ন ব্রাউজারে কিভাবে রেন্ডার এবং কার্যকরী হয় তা পরীক্ষা করুন, একাধিক ব্রাউজার ইনস্টল করার বা একাধিক ডিভাইস ব্যবহার করার প্রয়োজন ছাড়াই।
প্রতিক্রিয়াশীল ডিজাইন পরীক্ষা: নিশ্চিত করুন যে আপনার ওয়েবসাইটটি সঠিকভাবে মোবাইল এবং ডেস্কটপ ডিভাইস সনাক্ত করে এবং উপযুক্ত লেআউট সরবরাহ করে।
ফিচার ডিটেকশন যাচাই: নিশ্চিত করুন যে আপনার ওয়েবসাইটের ফিচার ডিটেকশন মেকানিজমগুলি বিভিন্ন ব্রাউজারের সক্ষমতার জন্য সঠিকভাবে কাজ করে।
QA এবং স্বয়ংক্রিয় পরীক্ষা: আপনার স্বয়ংক্রিয় পরীক্ষার স্ক্রিপ্টে বিভিন্ন ইউজার এজেন্ট অন্তর্ভুক্ত করুন যাতে বিভিন্ন ব্যবহারকারীর পরিবেশের সিমুলেশন করা যায়।
পারফরম্যান্স পরীক্ষা: বিশ্লেষণ করুন কিভাবে আপনার ওয়েবসাইট বিভিন্ন ব্রাউজার পরিবেশ থেকে প্রবেশ করলে পারফর্ম করে।
ব্রাউজার-নির্দিষ্ট সমস্যা ডিবাগিং: পুনরুত্পাদন এবং সংশোধন করুন এমন বাগগুলি যা শুধুমাত্র নির্দিষ্ট ব্রাউজার বা সংস্করণে ঘটে।
API পরীক্ষা: পরীক্ষা করুন কিভাবে আপনার API বিভিন্ন ক্লায়েন্ট অ্যাপ্লিকেশন থেকে আসা অনুরোধগুলি পরিচালনা করে।
যদিও আমাদের র্যান্ডম ইউজার এজেন্ট জেনারেটর অনেক পরীক্ষার পরিস্থিতির জন্য উপকারী, তবে কিছু বিকল্প পদ্ধতি রয়েছে:
ব্রাউজার পরীক্ষার পরিষেবা: BrowserStack, Sauce Labs, বা LambdaTest-এর মতো প্ল্যাটফর্মগুলি পরীক্ষার জন্য বাস্তব ব্রাউজার ইনস্ট্যান্স সরবরাহ করে, কেবল ইউজার এজেন্ট সিমুলেট করার পরিবর্তে।
ব্রাউজার ডেভেলপার টুলস: বেশিরভাগ আধুনিক ব্রাউজার তাদের ডেভেলপার টুলের মাধ্যমে ইউজার এজেন্ট ওভাররাইড করার অনুমতি দেয়, যা দ্রুত পরীক্ষার জন্য উপকারী হতে পারে।
ইউজার এজেন্ট সুইচার এক্সটেনশন: ব্রাউজার এক্সটেনশনগুলি যা ব্রাউজিংয়ের সময় পূর্বনির্ধারিত ইউজার এজেন্টগুলির মধ্যে স্যুইচ করতে দেয়।
ভার্চুয়াল মেশিন বা কন্টেনার: বিভিন্ন অপারেটিং সিস্টেম এবং ব্রাউজারগুলির জন্য বাস্তব ইনস্ট্যান্স চালানো সবচেয়ে সঠিক পরীক্ষার জন্য।
হেডলেস ব্রাউজার পরীক্ষা: Puppeteer বা Selenium-এর মতো টুলগুলি ব্যবহার করে বিভিন্ন ইউজার এজেন্ট সেটিংস সহ ব্রাউজারগুলি প্রোগ্রাম্যাটিকভাবে নিয়ন্ত্রণ করা।
প্রতিটি বিকল্পের নিজস্ব সুবিধা রয়েছে এবং আপনার নির্দিষ্ট পরীক্ষার প্রয়োজনীয়তা এবং সম্পদের উপর নির্ভর করে আরও উপযুক্ত হতে পারে।
ইউজার এজেন্ট স্ট্রিংয়ের ধারণাটি ওয়ার্ল্ড ওয়াইড ওয়েবের প্রাথমিক দিনগুলিতে ফিরে যায়। "ইউজার এজেন্ট" শব্দটি HTTP স্পেসিফিকেশন থেকে এসেছে, যেখানে এটি একটি ওয়েব সার্ভারে অনুরোধকারী ক্লায়েন্ট অ্যাপ্লিকেশনকে নির্দেশ করে।
প্রথম ব্যাপকভাবে ব্যবহৃত ব্রাউজার, NCSA মোজাইক, একটি সহজ ইউজার এজেন্ট স্ট্রিং অন্তর্ভুক্ত করেছিল যা ব্রাউজার নাম এবং সংস্করণ চিহ্নিত করেছিল। যখন নেটস্কেপ নেভিগেটর মুক্তি পায়, এটি একটি অনুরূপ ফরম্যাট ব্যবহার করে। তবে, যখন ওয়েব সার্ভারগুলি ব্রাউজারের উপর ভিত্তি করে বিভিন্ন সামগ্রী বিতরণ করতে শুরু করে, তখন "ব্রাউজার স্নিফিং" নামে পরিচিত একটি অনুশীলন উদ্ভূত হয়।
নেটস্কেপ এবং ইন্টারনেট এক্সপ্লোরারের মধ্যে ব্রাউজার যুদ্ধের সময়, ওয়েবসাইটগুলি প্রায়শই বিশেষভাবে নির্দিষ্ট ব্রাউজারের জন্য অপ্টিমাইজড সামগ্রী পরিবেশন করত। সামঞ্জস্য নিশ্চিত করার জন্য, ব্রাউজারগুলি নিজেদের অন্য ব্রাউজার হিসাবে চিহ্নিত করতে স্ট্রিং অন্তর্ভুক্ত করতে শুরু করে। এই কারণেই বেশিরভাগ আধুনিক ব্রাউজার এখনও তাদের ইউজার এজেন্ট স্ট্রিংয়ে "মোজিলা" অন্তর্ভুক্ত করে, যা নেটস্কেপ নেভিগেটরের কোড নামের একটি রেফারেন্স।
মোবাইল ডিভাইসের উত্থান ইউজার এজেন্ট স্ট্রিংগুলিতে নতুন জটিলতা নিয়ে এসেছে। মোবাইল ব্রাউজারগুলিকে মোবাইল হিসাবে নিজেদের চিহ্নিত করতে হয়েছিল যাতে উপযুক্ত সামগ্রী পেতে পারে, যা ডিভাইস শনাক্তকারী এবং মোবাইল-নির্দিষ্ট টোকেনগুলির সংযোজনের দিকে নিয়ে যায়।
যেহেতু ওয়েব ইকোসিস্টেম আরও জটিল হয়েছে, ইউজার এজেন্ট স্ট্রিংগুলি ক্রমবর্ধমান জটিল হয়ে উঠেছে। তারা এখন একাধিক ব্রাউজার ইঞ্জিনের উল্লেখ অন্তর্ভুক্ত করে (যেমন "AppleWebKit" এবং "Gecko") সামঞ্জস্যতার কারণে, যদিও সেগুলি আসলে ব্যবহৃত হচ্ছে না।
এই জটিলতা সঠিকভাবে ইউজার এজেন্ট স্ট্রিংগুলি বিশ্লেষণ করার চ্যালেঞ্জ তৈরি করেছে, এবং কিছু ওয়েব স্ট্যান্ডার্ড গ্রুপগুলি ইউজার এজেন্ট স্ট্রিংগুলি বাতিল বা সরল করার প্রস্তাব দিয়েছে আরও কাঠামোগত ক্লায়েন্ট হিন্টের পক্ষে। তবে, পেছনের সামঞ্জস্যের কারণে, ঐতিহ্যগত ইউজার এজেন্ট স্ট্রিং এখনও ওয়েব ব্রাউজিংয়ের একটি অপরিহার্য অংশ।
এখানে বিভিন্ন প্রোগ্রামিং ভাষায় ইউজার এজেন্ট স্ট্রিংগুলির সাথে কাজ করার উদাহরণ রয়েছে:
1// জাভাস্ক্রিপ্ট: ইউজার এজেন্ট থেকে ব্রাউজার টাইপ সনাক্ত করা
2function detectBrowser() {
3 const userAgent = navigator.userAgent;
4
5 if (userAgent.indexOf("Firefox") > -1) {
6 return "ফায়ারফক্স";
7 } else if (userAgent.indexOf("SamsungBrowser") > -1) {
8 return "স্যামসাং ব্রাউজার";
9 } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
10 return "অপার";
11 } else if (userAgent.indexOf("Trident") > -1) {
12 return "ইন্টারনেট এক্সপ্লোরার";
13 } else if (userAgent.indexOf("Edge") > -1) {
14 return "এজ";
15 } else if (userAgent.indexOf("Chrome") > -1) {
16 return "ক্রোম";
17 } else if (userAgent.indexOf("Safari") > -1) {
18 return "সাফারি";
19 } else {
20 return "অজানা";
21 }
22}
23
24// ব্যবহার
25console.log("আপনি ব্যবহার করছেন: " + detectBrowser());
26
1# পাইথন: অনুরোধে কাস্টম ইউজার এজেন্ট সেট করা
2import requests
3
4def fetch_with_user_agent(url, user_agent):
5 headers = {
6 'User-Agent': user_agent
7 }
8 response = requests.get(url, headers=headers)
9 return response.text
10
11# উদাহরণ ব্যবহার
12chrome_ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
13content = fetch_with_user_agent('https://example.com', chrome_ua)
14print(content[:100]) # প্রতিক্রিয়ার প্রথম 100 অক্ষর মুদ্রণ করুন
15
1<?php
2// পিএইচপি: ইউজার এজেন্ট ব্যবহার করে মোবাইল ডিভাইস সনাক্ত করা
3function isMobileDevice() {
4 $userAgent = $_SERVER['HTTP_USER_AGENT'];
5 $mobileKeywords = array('Mobile', 'Android', 'iPhone', 'iPad', 'Windows Phone');
6
7 foreach ($mobileKeywords as $keyword) {
8 if (stripos($userAgent, $keyword) !== false) {
9 return true;
10 }
11 }
12 return false;
13}
14
15// ব্যবহার
16if (isMobileDevice()) {
17 echo "আপনি একটি মোবাইল ডিভাইস ব্যবহার করছেন।";
18} else {
19 echo "আপনি একটি ডেস্কটপ ডিভাইস ব্যবহার করছেন।";
20}
21?>
22
1// জাভা: একটি র্যান্ডম ইউজার এজেন্ট তৈরি করা
2import java.util.Random;
3
4public class UserAgentGenerator {
5 private static final String[] CHROME_VERSIONS = {"96.0.4664.110", "95.0.4638.69", "94.0.4606.81"};
6 private static final String[] OS_VERSIONS = {"Windows NT 10.0; Win64; x64",
7 "Macintosh; Intel Mac OS X 10_15_7",
8 "X11; Linux x86_64"};
9
10 public static String generateRandomChromeUserAgent() {
11 Random random = new Random();
12 String osVersion = OS_VERSIONS[random.nextInt(OS_VERSIONS.length)];
13 String chromeVersion = CHROME_VERSIONS[random.nextInt(CHROME_VERSIONS.length)];
14
15 return "Mozilla/5.0 (" + osVersion + ") AppleWebKit/537.36 (KHTML, like Gecko) " +
16 "Chrome/" + chromeVersion + " Safari/537.36";
17 }
18
19 public static void main(String[] args) {
20 System.out.println(generateRandomChromeUserAgent());
21 }
22}
23
1# রুবি: ইউজার এজেন্ট স্ট্রিং পার্স করা
2require 'user_agent_parser'
3
4def parse_user_agent(user_agent_string)
5 parser = UserAgentParser::Parser.new
6 client = parser.parse(user_agent_string)
7
8 {
9 browser_name: client.family,
10 browser_version: client.version.to_s,
11 os_name: client.os.family,
12 os_version: client.os.version.to_s,
13 device: client.device.family
14 }
15end
16
17# উদাহরণ ব্যবহার
18ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1'
19info = parse_user_agent(ua)
20puts info
21
1// C#: HttpClient-এ ইউজার এজেন্ট সেট করা
2using System;
3using System.Net.Http;
4using System.Threading.Tasks;
5
6class Program
7{
8 static async Task Main()
9 {
10 // কাস্টম ইউজার এজেন্ট সহ HttpClient তৈরি করুন
11 using (var httpClient = new HttpClient())
12 {
13 string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36";
14 httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
15
16 try
17 {
18 // কাস্টম ইউজার এজেন্ট সহ অনুরোধ করুন
19 HttpResponseMessage response = await httpClient.GetAsync("https://example.com");
20 response.EnsureSuccessStatusCode();
21 string responseBody = await response.Content.ReadAsStringAsync();
22
23 Console.WriteLine($"প্রতিক্রিয়া স্ট্যাটাস কোড: {response.StatusCode}");
24 Console.WriteLine(responseBody.Substring(0, 100) + "..."); // প্রথম 100 অক্ষর
25 }
26 catch (HttpRequestException e)
27 {
28 Console.WriteLine($"অনুরোধের ত্রুটি: {e.Message}");
29 }
30 }
31 }
32}
33
1// গো: কাস্টম ইউজার এজেন্ট সহ HTTP অনুরোধ তৈরি করা
2package main
3
4import (
5 "fmt"
6 "io/ioutil"
7 "net/http"
8)
9
10func main() {
11 // একটি নতুন অনুরোধ তৈরি করুন
12 req, err := http.NewRequest("GET", "https://example.com", nil)
13 if err != nil {
14 fmt.Printf("অনুরোধ তৈরি করতে ত্রুটি: %s\n", err)
15 return
16 }
17
18 // কাস্টম ইউজার এজেন্ট সেট করুন
19 req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36")
20
21 // অনুরোধ পাঠান
22 client := &http.Client{}
23 resp, err := client.Do(req)
24 if err != nil {
25 fmt.Printf("অনুরোধ পাঠাতে ত্রুটি: %s\n", err)
26 return
27 }
28 defer resp.Body.Close()
29
30 // প্রতিক্রিয়া পড়ুন
31 body, err := ioutil.ReadAll(resp.Body)
32 if err != nil {
33 fmt.Printf("প্রতিক্রিয়া পড়তে ত্রুটি: %s\n", err)
34 return
35 }
36
37 fmt.Printf("প্রতিক্রিয়া স্ট্যাটাস: %s\n", resp.Status)
38 fmt.Printf("প্রতিক্রিয়া শরীরের প্রিভিউ: %s\n", body[:100])
39}
40
এখানে বিভিন্ন ব্রাউজার এবং প্ল্যাটফর্মের জন্য কিছু বাস্তব ইউজার এজেন্ট স্ট্রিংয়ের উদাহরণ রয়েছে:
ক্রোম উইন্ডোজে:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2
ফায়ারফক্স ম্যাকওএসে:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2
সাফারি ম্যাকওএসে:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
2
এজ উইন্ডোজে:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
2
ক্রোম অ্যান্ড্রয়েডে:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2
সাফারি আইফোনে:
1Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1
2
ফায়ারফক্স অ্যান্ড্রয়েডে:
1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2
স্যামসাং ইন্টারনেট গ্যালাক্সিতে:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/16.0 Chrome/92.0.4515.166 Mobile Safari/537.36
2
"ইউজার এজেন্ট।" MDN ওয়েব ডক্স, মোজিলা, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
"ব্রাউজার ইউজার এজেন্ট স্ট্রিংস।" WhatIsMyBrowser.com, https://www.whatismybrowser.com/guides/the-latest-user-agent/
"HTTP ইউজার-এজেন্ট হেডার ব্যাখ্যা।" KeyCDN, https://www.keycdn.com/support/user-agent
"ক্লায়েন্ট হিন্টস।" MDN ওয়েব ডক্স, মোজিলা, https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
"ব্রাউজার ইউজার-এজেন্ট স্ট্রিংয়ের ইতিহাস।" WebAIM, https://webaim.org/blog/user-agent-string-history/
"ব্রাউজার ডিটেকশন ইউজার এজেন্ট ব্যবহার করে।" গুগল ডেভেলপারস, https://developer.chrome.com/docs/multidevice/user-agent/
আপনার কাজে দরকারী হতে পারে আরো টুল খুঁজে বের করুন