آموزش User Agent
بسم الله الرحمن الرحیم
User Agent چیست
در این بخش قصد دارم یک بخش ساده از یک درخواست ارسالی از سوی یک مرورگر (کلاینت) به سمت یک سرور را معرفی کنم. در واقع هنگامی که شما یک سایت را فراخوانی می کنید، درخواست شما و سایر اطلاعات مربوط به سیستم کلاینت شما توسط یک استرینگ به نام User Agent به سمت سرور ارسال می شود.
قصد معرفی و طولانی کردن بی جهت مطلب را ندارم، انشالله در بحث های آتی کاربرد این مبحث را کاملا توضیح خواهم داد.
تعریف User Agent
در واقع User Agent در پاسخ به یک درخواست ارسالی در بخش HTTP header قرار دارد.
در محاسبات، یک User Agent یک نرم افزار (a software agent) است که نصف کارهای کاربر را انجام می دهد. به عنوان مثال یک ایمیل ریدر یک User Agent است. در Session Initiation Protocol ، اصطلاح User Agent به دو end points نهایی که در یک ارتباط حضور دارند اشاره دارد
شما توسط این متغییر می توانید اطلاعات بسیاری از کاربر درخواست دهنده را بدست آورید.
این کد را درون یک صفحه بنویسید و خروجی آن را بررسی کنید:
protected void Page_Load(object sender, EventArgs e)
{
HttpBrowserCapabilities bc = Request.Browser;
Response.Write("<p>Browser Capabilities:</p>");
Response.Write("Type = " + bc.Type + "<br>");
Response.Write("Name = " + bc.Browser + "<br>");
Response.Write("Version = " + bc.Version + "<br>");
Response.Write("Major Version = " + bc.MajorVersion + "<br>");
Response.Write("Minor Version = " + bc.MinorVersion + "<br>");
Response.Write("Platform = " + bc.Platform + "<br>");
Response.Write("Is Beta = " + bc.Beta + "<br>");
Response.Write("Is Crawler = " + bc.Crawler + "<br>");
Response.Write("Is AOL = " + bc.AOL + "<br>");
Response.Write("Is Win16 = " + bc.Win16 + "<br>");
Response.Write("Is Win32 = " + bc.Win32 + "<br>");
Response.Write("Supports Frames = " + bc.Frames + "<br>");
Response.Write("Supports Tables = " + bc.Tables + "<br>");
Response.Write("Supports Cookies = " + bc.Cookies + "<br>");
Response.Write("Supports VB Script = " + bc.VBScript + "<br>");
Response.Write("Supports JavaScript = " + bc.JavaScript + "<br>");
Response.Write("Supports Java Applets = " + bc.JavaApplets + "<br>");
Response.Write("Supports ActiveX Controls = " + bc.ActiveXControls + "<br>");
Response.Write("CDF = " + bc.CDF + "<br>");
Response.Write("-------------------------------------------------- " + "<br>");
Response.Write("userAgent = " + Request.UserAgent + "<br>");
}
خوب بسیار ساده بود و مشخص گردید که چه اطلاعاتی را می توان از مرورگر کاربر دریافت کرد.
مثال کاربردی، ارائه گزارشات برای یک سازمان در خصوص تعیین میزان استفاده از نسخه های مختلف هر مرورگر و طبیعتا استفاده از روش ها و متدولوژیهایی که کاربران سایت بتوانند از آن استفاده کنند. شاید برای دوستانی که در حوزه طراحی وب سازمانی فعالیت نکرده باشند این موضوع محسوس نباشد. اگر بدانید بیشتر کاربران شما از چه ابزار هایی استفاده می کنند سرویس های بهتری ارائه خواهید داد و نتیجه رضایت افزایش خواهد یافت.
یک مثال ساده برای تصمیم گیری بر اساس وضعیت کاربر
string strUserAgent = Request.UserAgent.ToString().ToLower();
bool status = false;
if (strUserAgent != null)
{
if (Request.Browser.IsMobileDevice == true ||
strUserAgent.Contains("iphone") ||
strUserAgent.Contains("blackberry") ||
strUserAgent.Contains("mobile") ||
strUserAgent.Contains("windows ce") ||
strUserAgent.Contains("opera mini") ||
strUserAgent.Contains("palm"))
{
status = true;
}
}
و یا (مشکل همه طراحان وب مرورگر IE6)
String userAgent;
userAgent = Request.UserAgent;
if (userAgent.IndexOf("MSIE 6.0") > -1)
{
// The browser is Microsoft Internet Explorer Version 6.0.
}
دستور Request.UserAgent در MVC نیز کاربردی مشابه دارد.
هر عبارت قرار گرفته در رشته UserAgent دارای معنی خاص می باشدکه برای تشخیص هر بخش آن کافی است به سایت http://www.useragentstring.com رفته و در قسمت مربوطه یک رشته User Agent را ثبت و آن را آنالیز نمایید.
تمامی این مباحث را مطرح کردم تا فقط در بخش امنیتی که انشالله قرار خواهم داد، توضیح دهم که چطور می توانید یک سرور را گمراه کنید البته طبیعتا همه تا الان به این موضع واقف شده اید.
یک ابزار برای تغییر user Agent ابزار User Agent Switcher فایرفاکس است.