تولیدکننده تصادفی کاربر عامل برای آزمایش توسعه وب
رشتههای واقعی کاربر عامل مرورگر را با گزینههایی برای فیلتر کردن بر اساس نوع دستگاه، خانواده مرورگر و سیستم عامل تولید کنید. ایدهآل برای آزمایش توسعه وب و بررسیهای سازگاری.
تولید کننده تصادفی عامل کاربری
رشتههای عامل کاربری مرورگر واقعی و تصادفی را برای تست توسعه وب تولید کنید.
عامل کاربری تولید شده
مستندات
تولید کننده تصادفی User Agent
مقدمه
رشته User Agent یک شناسه متنی خاص است که مرورگرهای وب و سایر برنامهها به وبسایتها ارسال میکنند تا خود را شناسایی کنند. این رشته معمولاً شامل اطلاعاتی درباره مرورگر، سیستمعامل، نوع دستگاه و موتور رندرینگ مورد استفاده است. برای توسعهدهندگان وب و آزمایشکنندگان، دسترسی به مجموعهای از رشتههای User Agent واقعی برای تست سازگاری، پاسخگویی و عملکرد وبسایت در پلتفرمهای مختلف ضروری است.
این ابزار تولید کننده تصادفی User Agent رشتههای User Agent با ظاهری واقعی را بر اساس پارامترهای انتخابی شما ایجاد میکند. شما میتوانید بر اساس نوع دستگاه (رایانه یا موبایل)، خانواده مرورگر (Chrome، Firefox، Safari یا Edge) و سیستمعامل فیلتر کنید تا User Agentهایی تولید کنید که با نیازهای تست شما مطابقت داشته باشند. این ابزار یک رابط ساده با گزینههایی برای کپی کردن رشته تولید شده با یک کلیک و تولید رشتههای تصادفی جدید بهصورت آنی ارائه میدهد.
ساختار User Agent
رشتههای User Agent الگوهای خاصی را بسته به مرورگر و پلتفرم دنبال میکنند، اما بهطور کلی شامل چندین جزء مشترک هستند:
- شناسای مرورگر: معمولاً با "Mozilla/5.0" برای دلایل سازگاری تاریخی شروع میشود
- اطلاعات پلتفرم/سیستمعامل: جزئیات مربوط به سیستمعامل (Windows، macOS، Android، iOS)
- موتور مرورگر: موتور رندرینگ (مانند Gecko، WebKit یا Blink)
- جزئیات مرورگر: نام و نسخه خاص مرورگر
در اینجا یک تجزیه و تحلیل از ساختارهای معمول User Agent برای مرورگرهای اصلی آورده شده است:
Chrome
1Mozilla/5.0 (پلتفرم; جزئیات) AppleWebKit/537.36 (KHTML، مانند Gecko) Chrome/version Safari/537.36
2
Firefox
1Mozilla/5.0 (پلتفرم; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
2
Safari
1Mozilla/5.0 (پلتفرم) AppleWebKit/webkitversion (KHTML، مانند Gecko) Version/safariversion Safari/safariversion
2
Edge
1Mozilla/5.0 (پلتفرم) AppleWebKit/537.36 (KHTML، مانند Gecko) Chrome/chromiumversion Safari/537.36 Edg/edgeversion
2
بخش پلتفرم بین دستگاههای دسکتاپ و موبایل بهطور قابل توجهی متفاوت است:
نمونههای دسکتاپ:
- Windows:
Windows NT 10.0; Win64; x64
- macOS:
Macintosh; Intel Mac OS X 10_15_7
- Linux:
X11; Linux x86_64
نمونههای موبایل:
- Android:
Linux; Android 12; SM-G998B
- iOS:
iPhone; CPU iPhone OS 15_4 like Mac OS X
تفاوتهای نوع دستگاه
User Agents دسکتاپ
User Agentهای دسکتاپ معمولاً شامل اطلاعات خاص سیستمعامل، جزئیات معماری (مانند x86_64 یا Win64) و گاهی اوقات ترجیحات زبانی هستند. آنها تمایل دارند که در مقایسه با User Agentهای موبایل، بیشتر سازگار باشند.
User Agents موبایل
User Agentهای موبایل شامل اطلاعات مدل دستگاه، نسخههای سیستمعامل موبایل و اغلب شامل کلمه "Mobile" در انتها هستند. Safari موبایل در دستگاههای iOS شامل شناسههای "iPhone" یا "iPad" است، در حالی که دستگاههای Android شامل سازنده و شماره مدل هستند.
الگوهای نسخه مرورگر
هر مرورگر الگوهای نسخهبندی متفاوتی را دنبال میکند:
- Chrome: از شماره نسخههای چهار قسمتی استفاده میکند (بهعنوان مثال، 96.0.4664.110)
- Firefox: معمولاً از شماره نسخههای دو یا سه قسمتی استفاده میکند (بهعنوان مثال، 95.0 یا 95.0.2)
- Safari: از شماره نسخههای سادهای مانند 15.2 استفاده میکند
- Edge: از شماره نسخههایی مشابه Chrome اما با نسخه خاص Edge خود استفاده میکند (بهعنوان مثال، 96.0.1054.62)
موارد استفاده
تولید تصادفی User Agent کاربردهای مهمی در توسعه و تست وب دارد:
-
تست سازگاری بین مرورگرها: تست اینکه چگونه وبسایت شما در مرورگرهای مختلف نمایش داده و عمل میکند بدون نیاز به نصب چندین مرورگر یا استفاده از چندین دستگاه.
-
تست طراحی پاسخگو: تأیید اینکه وبسایت شما به درستی دستگاههای موبایل و دسکتاپ را شناسایی کرده و طرح مناسب را ارائه میدهد.
-
اعتبارسنجی تشخیص ویژگی: اطمینان از اینکه مکانیزمهای تشخیص ویژگی وبسایت شما به درستی برای قابلیتهای مختلف مرورگر کار میکنند.
-
تست QA و خودکار: گنجاندن User Agentهای مختلف در اسکریپتهای تست خودکار شما برای شبیهسازی محیطهای مختلف کاربری.
-
تست عملکرد: تجزیه و تحلیل اینکه چگونه وبسایت شما هنگام دسترسی از محیطهای مرورگر مختلف عمل میکند.
-
اشکالزدایی مشکلات خاص مرورگر: بازتولید و رفع اشکالاتی که فقط در مرورگرها یا نسخههای خاص رخ میدهند.
-
تست API: تست اینکه چگونه API شما درخواستها را از برنامههای کلاینت مختلف مدیریت میکند.
جایگزینها
در حالی که تولید کننده تصادفی User Agent ما برای بسیاری از سناریوهای تست مفید است، روشهای جایگزین دیگری نیز وجود دارد:
-
خدمات تست مرورگر: پلتفرمهایی مانند BrowserStack، Sauce Labs یا LambdaTest نمونههای واقعی مرورگر برای تست ارائه میدهند و نه فقط شبیهسازی User Agent.
-
ابزارهای توسعهدهنده مرورگر: اکثر مرورگرهای مدرن به شما اجازه میدهند User Agent را از طریق ابزارهای توسعهدهنده خود تغییر دهید که میتواند برای تستهای سریع مفید باشد.
-
افزونههای تغییر User Agent: افزونههای مرورگری که به شما اجازه میدهند در حین مرور بین User Agentهای از پیش تعریف شده جابجا شوید.
-
ماشینهای مجازی یا کانتینرها: اجرای نمونههای واقعی از سیستمعاملها و مرورگرهای مختلف برای دقیقترین تست.
-
تست مرورگر بدون سر: استفاده از ابزارهایی مانند Puppeteer یا Selenium برای کنترل برنامهنویسی مرورگرها با تنظیمات User Agent مختلف.
هر جایگزین مزایای خاص خود را دارد و ممکن است بسته به نیازها و منابع خاص تست شما مناسبتر باشد.
تاریخچه
مفهوم رشته User Agent به روزهای اولیه وب جهانی برمیگردد. اصطلاح "User Agent" از مشخصات HTTP نشأت میگیرد، جایی که به برنامه کلاینتی اشاره دارد که درخواستی به یک سرور وب ارسال میکند.
روزهای اولیه (دهه 1990)
اولین مرورگر مورد استفاده، NCSA Mosaic، شامل یک رشته User Agent ساده بود که نام و نسخه مرورگر را شناسایی میکرد. با انتشار Netscape Navigator، از فرمت مشابهی استفاده شد. با این حال، با شروع ارائه محتوای مختلف توسط سرورهای وب بر اساس مرورگر، عملی به نام "تشخیص مرورگر" به وجود آمد.
جنگ مرورگرها و جعل User Agent (اواخر دهه 1990)
در طول جنگ مرورگرها بین Netscape و Internet Explorer، وبسایتها اغلب محتوای بهینهسازی شده را بهطور انحصاری به مرورگرهای خاص ارائه میدادند. برای اطمینان از سازگاری، مرورگرها شروع به گنجاندن رشتههایی کردند که خود را به عنوان سایر مرورگرها شناسایی میکردند. به همین دلیل است که اکثر مرورگرهای مدرن هنوز "Mozilla" را در رشتههای User Agent خود شامل میشوند، ارجاعی به نام کد Netscape Navigator.
انقلاب موبایل (دهه 2000-2010)
ظهور دستگاههای موبایل پیچیدگی جدیدی به رشتههای User Agent اضافه کرد. مرورگرهای موبایل باید خود را به عنوان موبایل شناسایی میکردند تا محتوای مناسب را دریافت کنند که منجر به اضافه شدن شناساییهای دستگاه و توکنهای خاص موبایل شد.
چالشهای مدرن (دهه 2010-حال)
با رشد پیچیدگی اکوسیستم وب، رشتههای User Agent بهطور فزایندهای پیچیده شدهاند. آنها اکنون شامل ارجاعاتی به چندین موتور مرورگر (مانند "AppleWebKit" و "Gecko") برای دلایل سازگاری هستند، حتی زمانی که آن موتورها واقعاً مورد استفاده قرار نمیگیرند.
این پیچیدگی منجر به چالشهایی در تجزیه صحیح رشتههای User Agent شده است و برخی از گروههای استاندارد وب پیشنهاد کردهاند که رشتههای User Agent را منسوخ یا ساده کنند به نفع هینتهای مشتری ساختاریافتهتر. با این حال، به دلایل سازگاری با نسخههای قبلی، رشته User Agent سنتی همچنان بخشی ضروری از مرور وب باقی میماند.
مثالهای کد
در اینجا مثالهایی از نحوه کار با رشتههای User Agent در زبانهای برنامهنویسی مختلف آورده شده است:
1// جاوا اسکریپت: شناسایی نوع مرورگر از رشته User Agent
2function detectBrowser() {
3 const userAgent = navigator.userAgent;
4
5 if (userAgent.indexOf("Firefox") > -1) {
6 return "Firefox";
7 } else if (userAgent.indexOf("SamsungBrowser") > -1) {
8 return "Samsung Browser";
9 } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {
10 return "Opera";
11 } else if (userAgent.indexOf("Trident") > -1) {
12 return "Internet Explorer";
13 } else if (userAgent.indexOf("Edge") > -1) {
14 return "Edge";
15 } else if (userAgent.indexOf("Chrome") > -1) {
16 return "Chrome";
17 } else if (userAgent.indexOf("Safari") > -1) {
18 return "Safari";
19 } else {
20 return "Unknown";
21 }
22}
23
24// استفاده
25console.log("شما در حال استفاده از: " + detectBrowser());
26
1# پایتون: تنظیم User Agent سفارشی در درخواستها
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// PHP: شناسایی دستگاههای موبایل با استفاده از User Agent
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// جاوا: تولید یک User Agent تصادفی
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# روبی: تجزیه رشته User Agent
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#: تنظیم User Agent در HttpClient
2using System;
3using System.Net.Http;
4using System.Threading.Tasks;
5
6class Program
7{
8 static async Task Main()
9 {
10 // ایجاد HttpClient با User Agent سفارشی
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 // ارسال درخواست با User Agent سفارشی
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 با User Agentهای سفارشی
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 // تنظیم User Agent سفارشی
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
الگوهای معمول User Agent
در اینجا چند نمونه از رشتههای User Agent واقعی برای مرورگرها و پلتفرمهای مختلف آورده شده است:
مرورگرهای دسکتاپ
Chrome در ویندوز:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
2
Firefox در macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
2
Safari در macOS:
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
Edge در ویندوز:
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
مرورگرهای موبایل
Chrome در Android:
1Mozilla/5.0 (Linux; Android 12; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36
2
Safari در iPhone:
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
Firefox در Android:
1Mozilla/5.0 (Android 12; Mobile; rv:95.0) Gecko/95.0 Firefox/95.0
2
اینترنت سامسونگ در Galaxy:
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
منابع
-
"User Agent." MDN Web Docs، Mozilla، https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
-
"رشتههای User Agent مرورگر." WhatIsMyBrowser.com، https://www.whatismybrowser.com/guides/the-latest-user-agent/
-
"هدر User-Agent HTTP توضیح داده شده است." KeyCDN، https://www.keycdn.com/support/user-agent
-
"هینتهای مشتری." MDN Web Docs، Mozilla، https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
-
"تاریخچه رشته User Agent مرورگر." WebAIM، https://webaim.org/blog/user-agent-string-history/
-
"تشخیص مرورگر با استفاده از User Agent." Google Developers، https://developer.chrome.com/docs/multidevice/user-agent/
ابزارهای مرتبط
کشف ابزارهای بیشتری که ممکن است برای جریان کاری شما مفید باشند