ابزارهای مرورگر
User-Agent من
مرورگر شما درباره خودش به هر سایتی چه میگوید.
رشته User-Agent
مرورگر شمادر حال خواندن…
تحلیل یک User-Agent دیگر
رشتهای را از گزارش سرور، از یک نمونه سرایند یا از دستگاهی که نمیتوانید رویش مرورگر باز کنید بچسبانید.
این یعنی چه
- مرورگر
- —
- نسخه مرورگر
- —
- موتور رندر
- —
- سیستمعامل
- —
- نوع دستگاه
- —
- سکو
- —
- کارخواه خودکار
- —
سکو از یک رابط جداگانه مرورگر میآید نه از خود رشته، پس تنها سطری است که برای یک User-Agent چسباندهشده پر نمیشود.
رشته User-Agent همان چیزی است که مرورگر شما درباره خودش به هر سایتی میگوید: خانواده و نسخه مرورگر، موتور رندر، سیستمعامل و گاهی مدل دستگاه.
تحلیل در مرورگر شما انجام میشود. رشته چسباندهشده را هم میتوان تحلیل کرد — برای نمونه از گزارش یک سرور.
چرا این رشته اینقدر عجیب است
در آن نام چند مرورگر با هم آمده است، و این خطا نیست بلکه میراث سی سال سازگاری است: سایتها زمانی بسته به مرورگر کد متفاوتی میفرستادند و هر مرورگر تازه نام دیگران را به خودش افزود تا نسخه امروزی صفحه را بگیرد.
نتیجه آن است که رشته تقریباً هر مرورگر امروزی همزمان واژههای Mozilla، AppleWebKit، KHTML، Chrome و Safari را دارد. اطلاعات سودمند در آن هست، اما باید با قاعده بیرون کشیده شود نه با خواندن پشت سر هم.
یک رشته واقعی، جزء به جزء
یک رشته معمول کروم روی رایانه رومیزی را در نظر بگیرید: «Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36». به فهرستی از برنامههای نصبشده میماند، اما تقریباً همهاش بار تاریخی است که کسی جرئت برداشتنش را ندارد.
«Mozilla/5.0» را بیاستثنا همه مرورگرها میفرستند و این بخش هیچ خبری در خود ندارد. داخل پرانتز سکو آمده است، و آن هم لزوماً درست نیست: macOS از Big Sur به بعد صرفنظر از نسخه واقعی، 10_15_7 را گزارش میکند — عمداً، تا شناسایی دشوارتر شود. «AppleWebKit/537.36 (KHTML, like Gecko)» تبارنامه موتور است که بیش از ده سال پیش ثابت ماند، و «Safari/537.36» هم بههیچروی به معنای حضور Safari نیست.
تنها بخش واقعاً گویا «Chrome/131.0.0.0» است، و در همان هم رقمهای کوچک نسخه از قصد صفر شدهاند. از رشتهای صدوچند نویسهای، تکه کوچکی درباره مرورگر شما راست میگوید؛ دانستن اینکه کدام تکه، از خواندن تمام رشته مهمتر است.
موتور از نام مرورگر مهمتر است
موتور، کد صفحه را به تصویر روی نمایشگر تبدیل میکند: تعیین میکند چه امکاناتی در دسترس سایت است و به کدام خطاها برمیخورید. موتورهای مشترک بسیار بیش از آناند که نامها نشان میدهند: Edge و Opera و Brave و Vivaldi همان موتور کروم با پوستهای دیگرند، و هر مرورگری روی آیفون موتور Safari است، نشان روی آیکون هرچه باشد.
نام موتور در رشته نیامده و باید از نشانهها استنتاج شود. Blink یعنی «AppleWebKit/537.36» به همراه نشانه Chrome؛ WebKit یعنی «AppleWebKit» با هر نسخه دیگر؛ Gecko یعنی شماره «rv:» و پس از آن «Gecko/». موتورهای قدیمی هم رد به جا میگذارند: «Trident/» یعنی Internet Explorer، «Presto/» یعنی اپرای پیش از ۲۰۱۳ و «Edge/» یعنی Edge پیش از کروميوم.
روی آیفون مرورگرها این را آهسته اعتراف میکنند: نشانه Chrome به «CriOS»، فایرفاکس به «FxiOS» و Edge به «EdgiOS» بدل میشود. تحلیلی که تنها واژه Chrome را میجوید اینجا اشتباه میکند، و پیامدش این است که سایت کدی میفرستد که آن مرورگر اجرایش نمیکند.
تا چه اندازه میتوان به آن اعتماد کرد
این رشته را میتوان تغییر داد: ابزارهای توسعهدهنده، افزونهها، رباتها و حالتهای سازگاری این کار را میکنند. پس برای آمار و عیبیابی به کار میآید اما برای تصمیمهای امنیتی نه.
افزون بر این، مرورگرها عمداً دقت آن را کم میکنند: نسخههای کامل، نسخه سیستم و مدل دستگاه بیش از پیش با مقادیر گرد شده جایگزین میشوند یا درخواست صریح سرور میخواهند. اگر چیزی تعیین نشد، شاید خطای تحلیل نباشد بلکه همین محافظت باشد.
چه چیزی جای این رشته را گرفته است
مرورگرها کمکم به سوی نشانههای ساختیافته میروند: بهجای یک رشته بلند، سرور مجموعهای از مقادیر جدا میگیرد و میتواند با درخواستی صریح جزئیات بیشتری بخواهد — نسخه کامل، معماری سکو، مدل دستگاه. تا سرور نپرسد، تنها اطلاعات کلی میرسد.
برای یک سایت این یعنی بخشی از دادهها را باید آگاهانه درخواست کرد نه از رشته بیرون کشید. برای خواننده یعنی ناهمخوانی جزئیات اینجا با ابزاری دیگر لزوماً خطا نیست: ابزارها میتوانند بهسادگی مقدار متفاوتی درخواست کرده باشند.
پرسشهای متداول
چرا در رشته من نام چند مرورگر آمده است؟
این سازگاری تاریخی است. هر مرورگر تازه نام پیشینیان را افزود تا سایتها نسخه امروزی صفحه را به آن بدهند، و اکنون برداشتنشان ممکن نیست.
آیا میتوان این رشته را جعل کرد؟
بله، و بهسادگی. پس برای آمار و عیبیابی مناسب است اما مبنای تصمیمهای امنیتی نمیشود.
آیا رشته چسباندهشده به سرور فرستاده میشود؟
خیر. تحلیل را کد JavaScript در مرورگر شما انجام میدهد، درخواستی جایی نمیرود و ابزار حتی بدون اتصال شبکه هم کار میکند.