User-agent در HTTP request header، یک استرینگ است که بیانگر نوع درخواست دهنده، پلتفرم و برخی مشخصات دیگر آن است. به صورت استاندارد، هر درخواست کننده ای در request header که به سرور ارسال می کند، خودش را با User-agent معرفی می کند و سرور ممکن است برای یوزر ایجنت های مختلف، پاسخ های متفاوتی بدهد.
Syntax یوزر ایجنت به طور کلی به صورت زیر است:
User-Agent: <product> / <product-version> <comment>
یوزر ایجنت مرورگر شما که الان در حال رویت این صفحه با آن هستید به صورت زیر است:
در این مقاله در مورد یوزر ایجنت مرورگرها، سیستم عامل ها و ربات های موتورهای جستجو مطرح صحبت شده و شامل موارد زیر است:
- یوزر ایجنت در مرورگرها
- یوزر ایجنت در سیستم عامل های مختلف
- یوزر ایجنت در ربات های موتور جستجو
- User-agent client hint چیست؟
- چه استفاده ای از User agent بکنم؟
- پرسش های متداول در مورد User-agent
یوزر ایجنت در مرورگرها
یوزر ایجنت مرورگرهای مختلف بسیار شبیه یکدیگر هستند و در همه آنها نسخه مرورگر و نوع سیستم عامل مشخص است. یوزر ایجنت معمولا در مرورگرها به صورت زیر است:
User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>
- Mozilla/5.0 در یوزر ایجنت به معنی سازگار بودن مرورگر با موزیلا است و بیشتر مرورگرها از آن استفاده می کنند.
- rv:geckoversion بیانگر نسخه Gecko (موتور استفاده شده در موزیلا) است.
- ساختار یوزر ایجنت مرورگر های مختلف در سیستم عامل های گوناگون ممکن است با هم تفاوت هایی داشته باشد.
در ادامه، User agent های مرورگرهای گوگل کروم، فایرفاکس، سافاری و Edge کرومیوم را مشاهده می کنید.
یوزر ایجنت مرورگر Google Chrome
در یوزر ایجنت گوگل کروم، در همه سیستم عامل ها به جز سیستم عامل های دستگاه های اپل مانند iOS، iPadOS و Macintosh صرفا نسخه اصلی مرورگر وجود دارد و همچنین نسخه سیستم عامل نیز به صورت مختصر وجود دارد که به آن Reduced user-agent گفته می شود. به عنوان نمونه، اگر از گوگل کروم نسخه 119.0.5884.36 در سیستم عامل اندروید ۱۴ استفاده شود، صرفا نسخه مرورگر 119.0.0.0 و سیستم عامل Android 10; K در یوزر ایجنت ارسال می شود. در ادامه، فرمت یوزر ایجنت گوگل کروم و چند نمونه واقعی با سیستم عامل های مختلف نمایش داده شده است.
فرمت (سینتکس) User-agent string در مرورگر گوگل کروم
Mozilla/5.0 (platform; rv:geckoversion) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/chromeversion
یوزر ایجنت مرورگر گوگل کروم نسخه 120.0.5993.88 در سیستم عامل ویندوز 11
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
یوزر ایجنت مرورگر گوگل کروم نسخه 120.0.5993.88 در سیستم عامل Ubuntu 22
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
یوزر ایجنت مرورگر گوگل کروم نسخه 120.0.5993.88 در سیستم عامل macOS 10.15.7
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
یوزر ایجنت مرورگر گوگل کروم نسخه 120.0.5993.88 در سیستم عامل iOS 17.0.3 گوشی آیفون (در اینجا، نسخه کامل مرورگر وجود دارد)
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/120.0.5993.88 Mobile/15E148 Safari/604.1
در یوزر ایجنت گوشی های آیفون، بعد از کلمه Mobile، عبارتی مانند 15E148 مربوط به OS firmware build number است.
یوزر ایجنت مرورگر گوگل کروم نسخه 120.0.5993.88 در سیستم عامل iPadOS 17.1 آیپد ۱۰ (در اینجا، نسخه کامل مرورگر وجود دارد)
Mozilla/5.0 (iPad; CPU OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/120.0.5993.88 Mobile/15E148 Safari/604.1
یوزر ایجنت مرورگر گوگل کروم نسخه 120.0.5993.88 در سیستم عامل Android 14 (سیستم عامل Android 10; K در یوزر ایجنت نمایش داده شده)
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
یوزر ایجنت مرورگر Mozilla Firefox
در یوزر ایجنت Mozilla Firefox، مانند گوگل کروم، صرفا نسخه اصلی مرورگر وجود دارد. به عنوان نمونه، اگر از فایرفاکس نسخه 120.0.2 استفاده شود، صرفا نسخه 120.0 در یوزر ایجنت ارسال می شود. در ادامه، فرمت یوزر ایجنت فایرفاکس و چند نمونه دیگر با سیستم عامل های مختلف نمایش داده شده اند.
فرمت (سینتکس) User-agent string در مرورگر موزیلا فایرفاکس
Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion
یوزر ایجنت مرورگر فایرفاکس نسخه 119.0.1 در سیستم عامل ویندوز 11
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
یوزر ایجنت مرورگر فایرفاکس نسخه 119.0.1 در سیستم عامل Ubuntu 22
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0
یوزر ایجنت مرورگر فایرفاکس نسخه 119.0.1 در سیستم عامل macOS 10.15.7
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/119.0
یوزر ایجنت مرورگر Safari اپل
مرورگر Safari اپل برای سیستم عامل های macOS و iOS در دسترس است. در یوزر ایجنت مرورگر سافاری، نسخه مرورگر بعد از کلمه Version نمایش داده می شود و بر خلاف مرورگرهای گوگل کروم و فایرفاکس، عدد نسخه به صورت دقیق وجود دارد.
فرمت (سینتکس) User-agent string در مرورگر سافاری اپل
Mozilla/5.0 (platform; rv:geckoversion) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/safariversion
یوزر ایجنت مرورگر سافاری نسخه 17.0 در سیستم عامل macOS 10.15.7
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15
یوزر ایجنت مرورگر سافاری نسخه 17.0.1 در سیستم عامل iOS 17.0.3 گوشی آیفون
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0.1 Mobile/15E148 Safari/604.1
یوزر ایجنت مرورگر سافاری نسخه 17.1 در سیستم عامل iOS 17.1 آیپد 10
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15
در یوزر ایجنت تبلت های iPad، عبارت Mobile/BuildNumber در مرورگر سافاری وجود ندارد و سیستم عامل نیز به جای iPad، سیستم عامل Macintosh است. این مورد در مرورگر گوگل کروم در آیپد، به این صورت نیست و سیستم عامل iPad به همراه Mobile/BuildNumber نمایش داده می شود.
یوزر ایجنت مرورگر مایکروسافت Edge Chromium
مرورگر Microsoft Edge Chromium به همراه ویندوز ۱۰ و ۱۱ عرضه می شود و امکان نصب آن روی سیستم عامل های مختلف نیز وجود دارد. همان طور که از نام آن مشخص است، این مرورگر از پروژه Chromium گوگل استفاده می کند و به همین دلیل در یوزر ایجنت آن، نام و نسخه Chrome نیز وجود دارد.
یوزر ایجنت مرورگر مایکروسافت Edge Chromium نسخه 118.0.2088.76 در سیستم عامل ویندوز 11
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76
یوزر ایجنت در سیستم عامل های مختلف
همان طور که در نمونه های بالا مشاهده کردید، یوزر ایجنت مرورگرها حاوی اطلاعات (<system-information>) است که نشان دهنده سیستم عامل و در برخی موارد حاوی نسخه سیستم عامل است.
نسخه سیستم عامل در یوزر ایجنت برخی از مرورگرها در برخی از سیستم عامل ها وجود ندارد. در برخی موارد نیز مانند مرورگر گوگل کروم در اندروید ۱۰ تا ۱۴ (در لحظه نگارش این متن)، سیستم عامل Android 10 در یوزر ایجنت نمایش داده می شود. به عنوان یک نمونه دیگر، در iPad اپل، مرورگرهای گوگل کروم و سافاری، به ترتیب سیستم عامل های iPad و Macintosh را نمایش می دهند.
چند نمونه از (<system-information>) در یوزر ایجنت سیستم عامل های مختلف در ادامه نمایش داده شده اند:
(Windows NT 10.0; Win64; x64) #Windows 11 64bit
(Windows NT 10.0; Win64; x64) #Windows 10 64bit
(Windows NT 6.3; Win64; x64) #Windows 8.1 64bit
(Windows NT 6.2; Win64; x64) #Windows 8 64bit
(Windows NT 6.1; Win64; x64) #Windows 7 64bit
(Windows NT 6.0; Win64; x64) #Windows Vista 64bit
(Windows NT 5.1; Win64; x64) #Windows XP 64bit
(X11; Ubuntu; Linux x86_64; rv:109.0) #Ubuntu 22.3
(Macintosh; Intel Mac OS X 10_15_7) #macOS Sonama 10.15.7, Intel/M2 CPU
(iPhone; CPU iPhone OS 16_7_1 like Mac OS X) #iOS 16.7.1, iPhone 13
(iPad; CPU OS 17_1 like Mac OS X) #iPadOS 17.1, Google Chrome
(Macintosh; Intel Mac OS X 10_15_7) #iPadOS 17.1, Safari (Shows Macintosh instead of iPad)
(Linux; Android 10; K) #Android 10~14, Google Chrome (Shows Android 10)
(Android 14; Mobile; rv:109.0) #Android 14, Pixel 7, Firefox
(Android 11; Mobile; rv:109.0) #Android 11, Xiaomi Note 8 Pro
(Linux; Android 6.0.1; Nexus 5X Build/MMB29P) #Android 6.0.1, Nexus 5
(X11; CrOS x86_64 15183.44.0) #Chromium OS
یوزر ایجنت در ربات های موتور جستجو
ربات های موتورهای جستجو مانند مرورگرها دارای یوزر ایجنت هستند. موتورهای جستجویی که دارای سرویس های مختلفی هستند، معمولا برای هر سرویس از یک یوزر ایجنت مشخص استفاده می کنند. در ادامه تعدادی از یوزر ایجنت هایی که برای crawl صفحات توسط موتورهای جستجوی مطرح استفاده می شوند، نمایش داده شده اند.
گوگل بات برای Crawl سایت ها از آخرین نسخه Stable مرورگر گوگل کروم استفاده می کند که به آن evergreen Googlebot گفته می شود.
برای آشنایی با ربات های دیگر گوگل، مقاله گوگل بات چیست را مطالعه بفرمایید.
فرمت (سینتکس) یوزر ایجنت Googlebot موبایل و دسکتاپ
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) #Googlebot Smartphone
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z Safari/537.36 #Googlebot Desktop
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) #Googlebot Desktop (Rarely)
Googlebot/2.1 (+http://www.google.com/bot.html) #Googlebot Desktop (Rarely)
فرمت (سینتکس) یوزر ایجنت Bingbot موبایل و دسکتاپ
بینگ بات برای Crawl سایت ها از آخرین نسخه Stable مرورگر Microsoft Edge استفاده می کند و به آن evergreen Bingbot گفته می شود.
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) #Bingbot Smartphone
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Chrome/W.X.Y.Z Safari/537.36 #Bingbot Desktop
فرمت (سینتکس) یوزر ایجنت Yandex موبایل و دسکتاپ
ربات موتور جستجوی یاندکس، از یوزر ایجنت گوشی iPhone و سیستم عامل iOS 8.1 و مرورگر سافاری ۸ که قدیمی است برای کراول صفحات با موبایل و از مرورگر گوگل کروم برای کراول دسکتاپ استفاده می کند.
Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B411 Safari/600.1.4 (compatible; YandexMobileBot/3.0; +http://yandex.com/bots) #Yandexbot Mobile
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z #Yandexbot Desktop
User-Agent client hint چیست؟
User-agent client hint اطلاعاتی است که مانند یوزر ایجنت توسط درخواست دهنده (مانند مرورگر) در HTTP request header به سرور ارسال می شود و ممکن است سرور با توجه به آن اطلاعات، پاسخ متفاوتی بدهد.
برای اینکه متوجه شوید که یک سرور به User-agent client hint اهمیت می دهد یا خیر، HTTP response header صفحه را در چک کنید. اگر مانند نمونه زیر، حاوی Accept-CH بود، به معنی اهمیت داشتن User-agent client hint برای سرور است.
Accept-CH: Width, Downlink, Sec-CH-UA
نمونه User-agent client hint در HTTP request header
Sec-Ch-Ua: "Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"
Sec-Ch-Ua-Mobile: ?1
Sec-Ch-Ua-Platform: "Android"
- Sec-Ch-Ua: برند و نسخه درخواست دهنده را مشخص می کند. به عنوان نمونه می تواند برند مرورگر و نسخه مرورگر را مشخص کند.
- Sec-Ch-Ua-Mobile: موبایل بودن یا نبودن دستگاه را مشخص می کند. Sec-CH-UA-Mobile می تواند ?1 به معنی موبایل و ?0 به معنی دسکتاپ باشد.
- Sec-CH-UA-Platform: بیانگر سیستم عامل دستگاه است و می تواند یکی از مقادیر “Android”، “Chromium OS”، “Chrome OS”، “iOS”، “Linux”، “macOS”، “Windows” و “Unknown” باشد.
چه استفاده ای از user-agent بکنم؟
دانستن User agent می تواند کاربرد های مختلف داشته باشد.
- طراحی سایت موبایل فرندلی: در طراحی سایت موبایل فرندلی، به عنوان نمونه، اگر از تکنیک dynamic serving یا seperate URLs برای موبایل فرندلی بودن سایت استفاده می کنید، ممکن است مانند سایت torob.com، با توجه به یوزر ایجنت دستگاه موبایل یا غیر موبایل، صفحه متفاوتی به کاربر ارائه شود.
- کاربرد امنیت: با شناسایی یوزر ایجنت های ربات های اسپم، می شود policy برای بلاک کردن یا محدود کردن دسترسی آنها به سایت تبیین کرد.
- مطالعه لاگ وب سرور: می شود با بررسی یوزر ایجنت هایی که در لاگ وب سرور وجود دارند، و مطالعه آنها بر اساس کارهایی که روی سایت و سرور انجام می شود، به این نتیجه رسید که تاثیر کارهای انجام شده بر روند کراول شدن سایت توسط ربات ها چه بوده است و برای بودجه کراول برنامه ریزی بهتری کرد.
لطفا اگر تجربه دیگری در استفاده از یوزر ایجنت دارید که برای کاربران مفید است، به اشتراک بگذارید.
پرسش های متداول در مورد user-agent
برای تغییر یوزر ایجنت در مرورگر گوگل کروم، وارد DevTools شوید و در تب Network روی آیکون Network Conditions (شبیه وای فای است) کلیک کنید. سپس تیک گزینه Use browser default را برداشته و یوزر ایجنت مورد نظرتان را از منوی آبشاری انتخاب کنید و یا اینکه به صورت دستی، هر یوزر ایجنتی که مد نظرتان بود وارد کنید.
در حالت عادی گزارشی در گوگل آنالیتیکس برای نمایش یوزر ایجنت کاربران وجود ندارد. اما می توانید با استفاده از جاوا اسکریپت، همه یا بخشی از یوزر ایجنت کاربران را به صورت event به گوگل آنالیتیکس ارسال کنید و از گزارش های آن استفاده کنید.
اطلاعات محرمانه ای در یوزر ایجنت ارسال نمی شود و صرفا اطلاعات سیستم عامل و مرورگر و نوع دستگاهی که کاربر از آن استفاده می کند در HTTP request header ارسال می شوند.
مرورگرها به صورت پیش فرض، یوزر ایجنت را در HTTP request header به سرور ارسال می کنند. در صورت نیاز به تغییر آن، می توانید در تنظیمات مرورگر نسبت به تغییر یوزر ایجنت اقدام کنید. از آنجایی که برخی از سایت ها و سرورها ممکن است با توجه به یوزر ایجنت مرورگرها، پاسخ متفاوتی ارسال کنند، توصیه می شود که در حالت عادی، یوزر ایجنت را تغییر ندهید.
خیر. مرورگرها و ربات های معروف در ریکوئست هایی که به سرور ارسال می کنند، یوزر ایجنت را نیز ارسال می کنند، ولی وجود یوزر ایجنت در HTTP request header اجباری نیست و ممکن است برخی از اسکریپت ها درخواست خود را بدون یوزر ایجنت به سرور ارسال کنند.
به صورت کلی، به اشتراک گذاری یوزر ایجنت خطری ندارد. ولی به هر حال برخی از افراد برای محفاظت بیشتر از پرایوسی خود، این کار را انجام نمی دهند.
🔗 منابع: Google Developers, Microsoft Bing Help, Yandex Support, MDN Web Docs1, MDN Web Docs2