ASP.NET獲取客戶端信息,獲取客戶端IP等等


 

山上明月

ASP.NET能知道的東西

獲取服務器電腦名: Page.Server.ManchineName
獲取用戶信息: Page.User
獲取客戶端電腦名:Page.Request.UserHostName
獲取客戶端電腦IP: Page.Request.UserHostAddress

1. 在ASP.NET中專用屬性: 
獲取服務器電腦名:Page.Server.ManchineName 
獲取用戶信息:Page.User 
獲取客戶端電腦名:Page.Request.UserHostName 
獲取客戶端電腦IP:Page.Request.UserHostAddress

2. 在網絡編程中的通用方法: 
獲取當前電腦名:static System.Net.Dns.GetHostName() 
根據電腦名取出全部IP地址:static System.Net.Dns.Resolve(電腦名).AddressList 
也可根據IP地址取出電腦名:static System.Net.Dns.Resolve(IP地址).HostName

3. 系統環境類的通用屬性: 
當前電腦名:static System.Environment.MachineName 
當前電腦所屬網域:static System.Environment.UserDomainName 
當前電腦用戶:static System.Environment.UserName

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入相應的空間信息
using System.Text.RegularExpressions;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //此處輸入Ip地址,你可以做成接受文本框的值進行查詢
        Response.Write(GetCustomerMac("192.168.168.168"));
    }
     public string GetCustomerMac(string IP)
    {
      string dirResults="";
      ProcessStartInfo psi  = new ProcessStartInfo();
      Process proc = new Process();
      psi.FileName = "nbtstat";
      psi.RedirectStandardInput = false;
      psi.RedirectStandardOutput = true;
      psi.Arguments = "-a " + IP;
      psi.UseShellExecute = false;
      proc = Process.Start(psi);
      dirResults = proc.StandardOutput.ReadToEnd();
      proc.WaitForExit();
      //匹配mac地址
      Match m = Regex.Match(dirResults, "\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w\\w");
      //若匹配成功則返回mac,否則返回找不到主機信息
      if (m.ToString() != "")
          return m.ToString();
      else
          return "找不到主機信息";
    }
}

  如果我們在asp.net中有需求要獲取客戶端計算機的名稱,可以通過Request.UserHostName獲取,也可以在引用System.Net命名空間后,使用下面的方法獲取:

       ///<summary>
       /// 獲取客戶端計算機名稱
        ///</summary>
       ///<returns></returns>
        publicstring GetClientComputerName()
        {
            string clientIP = Request.UserHostAddress;//獲取客戶端的IP主機地址
            IPHostEntry hostEntry = Dns.GetHostEntry(clientIP);//獲取IPHostEntry實體
            return hostEntry.HostName;//返回客戶端計算機名稱
        }

//獲取遠程客戶端的瀏覽器信息
HttpBrowserCapabilities   httpbc=System.Web.HttpContext.Current.Request.Browser;
string   strInfo= "您好,您正在使用   "   +   httpbc.Browser   +   "   v. "   +   httpbc.Version   +   ",你的運行平台是   "   +   httpbc.Platform   ;
//獲取遠程客戶端的ip主機地址
strInfo=System.Web.HttpContext.Current.Request.UserHostAddress;
//獲取遠程客戶端的DNS名稱
strInfo=System.Web.HttpContext.Current.Request.UserHostName;
//客戶端上次請求的URL路徑
strInfo=System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
//當前請求的URl
strInfo=System.Web.HttpContext.Current.Request.Url.ToString();
//客戶端瀏覽器的原始用戶代理信息
strInfo=System.Web.HttpContext.Current.Request.UserAgent;

    //獲取瀏覽器+版本號
    public string getBrowser()
    {
        string browsers;
        HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
        string aa = bc.Browser.ToString();
        string bb = bc.Version.ToString();
        browsers = aa + bb;
        return browsers;
    }
    //獲取客戶端IP地址
    public string getIP()
    {
        string result = String.Empty;
        result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if (null == result || result == String.Empty)
        {
            result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        }
        if (null == result || result == String.Empty)
        {
            result = HttpContext.Current.Request.UserHostAddress;
        }
        if (null == result || result == String.Empty)
        {
            return "0.0.0.0";
        }
        return result;
    }
    //獲取操作系統版本號  
    public static string SystemCheck()  
    {  
        string Agent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
        if (Agent.IndexOf("NT 4.0") > 0)
            return "Windows NT ";
        else if (Agent.IndexOf("NT 5.0") > 0)
            return "Windows 2000";
        else if (Agent.IndexOf("NT 5.1") > 0)
            return "Windows XP";
        else if (Agent.IndexOf("NT 5.2") > 0)
            return "Windows 2003";
        else if (Agent.IndexOf("NT 6.0") > 0)
            return "Windows Vista";
else if (Agent.IndexOf("NT 7.0") > 0)
            return "Windows 7";
else if (Agent.IndexOf("NT 8.0") > 0)
            return "Windows 8";
        else if (Agent.IndexOf("WindowsCE") > 0)
            return "Windows CE";
        else if (Agent.IndexOf("NT") > 0)
            return "Windows NT ";
        else if (Agent.IndexOf("9x") > 0)
            return "Windows ME";
        else if (Agent.IndexOf("98") > 0)
            return "Windows 98";
        else if (Agent.IndexOf("95") > 0)
            return "Windows 95";
        else if (Agent.IndexOf("Win32") > 0)
            return "Win32";
        else if (Agent.IndexOf("Linux") > 0)
            return "Linux";
        else if (Agent.IndexOf("SunOS") > 0)
            return "SunOS";
        else if (Agent.IndexOf("Mac") > 0)
            return "Mac";
        else if (Agent.IndexOf("Linux") > 0)  
            return "Linux";
        else if (Agent.IndexOf("Windows") > 0)  
            return "Windows";
        return "未知類型";  
    }  
}

使用這個函數可以用ASP.NET開發服務器探針程序。

服務端信息:

Label1.Text = 服務器名稱:+Server.MachineName;//服務器名稱  
Label2.Text = 服務器IP地址: + Request.ServerVariables[LOCAL_ADDR];//服務器IP地址  
Label3.Text = 服務器域名: + Request.ServerVariables[SERVER_NAME];//服務器域名  
Label4.Text = .NET解釋引擎版本: + .NET CLR + Environment.Version.Major + . + Environment.Version.Minor + . + Environment.Version.Build + . + Environment.Version.Revision;//.NET解釋引擎版本  
Label5.Text = 服務器操作系統版本: + Environment.OSVersion.ToString();//服務器操作系統版本  
Label6.Text = 服務器IIS版本: + Request.ServerVariables[SERVER_SOFTWARE];//服務器IIS版本  
Label7.Text = HTTP訪問端口: + Request.ServerVariables[SERVER_PORT];//HTTP訪問端口  
Label8.Text = 虛擬目錄的絕對路徑: + Request.ServerVariables[APPL_RHYSICAL_PATH];//虛擬目錄的絕對路徑  
Label9.Text = 執行文件的絕對路徑: + Request.ServerVariables[PATH_TRANSLATED];//執行文件的絕對路徑  
Label10.Text = 虛擬目錄Session總數: + Session.Contents.Count.ToString();//虛擬目錄Session總數  
Label11.Text = 虛擬目錄Application總數: + Application.Contents.Count.ToString();//虛擬目錄Application總數  
Label12.Text = 域名主機: + Request.ServerVariables[HTTP_HOST];//域名主機  
Label13.Text = 服務器區域語言: + Request.ServerVariables[HTTP_ACCEPT_LANGUAGE];//服務器區域語言  
Label14.Text = 用戶信息: + Request.ServerVariables[HTTP_USER_AGENT];  
Label14.Text=CPU個數:+Environment.GetEnvironmentVariable(NUMBER_OF_PROCESSORS);//CPU個數  
Label15.Text = CPU類型: + Environment.GetEnvironmentVariable(PROCESSOR_IDENTIFIER);//CPU類型  
Label16.Text = 進程開始時間: + GetPrStart();//進程開始時間  
Label17.Text = AspNet 內存占用: + GetAspNetN();//AspNet 內存占用  
Label18.Text = AspNet CPU時間: + GetAspNetCpu();//AspNet CPU時間  
Label19.Text = FSO 文本文件讀寫: + Check(Scripting.FileSystemObject);//FSO 文本文件讀寫  
Label20.Text = 應用程序占用內存 + GetServerAppN();//應用程序占用內存

客戶端信息:

Request.Browser.MajorVersion.ToString();//獲取客戶端瀏覽器的(主)版本號Request.Browser.Version.ToString();//獲取客戶端瀏覽器的完整版本號
Request.Browser.Platform.ToString();//獲取客戶端使用平台的名字
Request.Browser.Version; //瀏覽器版本
HttpRequest.Url                        //獲取有關當前請求的    URL    的信息。   
HttpRequest.UrlReferrer        //獲取有關客戶端上次請求的    URL    的信息,該請求鏈接到當前的    URL。   
HttpRequest.UserAgent            //獲取客戶端瀏覽器的原始用戶代理信息。   
HttpRequest.UserHostAddress    //獲取遠程客戶端的    IP    主機地址。   
HttpRequest.UserHostName          //獲取遠程客戶端的    DNS    名稱。   
HttpRequest.UserLanguages        //獲取客戶端語言首選項的排序字符串數組。
HttpRequest.UserAgent            //獲取客戶端瀏覽器的原始用戶代理信息。  

HttpBrowserCapabilities bc = Request.Browser;
Response.Write(瀏覽器信息:);
Response.Write(瀏覽器=  + bc.Browser +  );
Response.Write(型態=  + bc.Type + );
Response.Write(名稱=  + bc.Browser + );
Response.Write(版本=  + bc.Version + );
Response.Write(使用平台=  + bc.Platform + );
Response.Write(是否為測試版=  + bc.Beta + );
Response.Write(是否為16 位的環境=  + bc.Win16 + );
Response.Write(是否為32 位的環境=  + bc.Win32 + );
Response.Write(是否支持框架(frame) =  + bc.Frames + );
Response.Write(是否支持表格(table) =  + bc.Tables + );
Response.Write(是否支持cookie =  + bc.Cookies + );
Response.Write(是否支持vb script =  + bc.VBScript + );
Response.Write(是否支持java script =  + bc.JavaScript + );
Response.Write(是否支持java applets =  + bc.JavaApplets + );
Response.Write(是否支持activex controls =  + bc.ActiveXControls + );

ASP.NET獲取客戶端IP及MAC地址很多時候非常必要的,像做投票、留言、評論 等系統的時候防止別人惡意操作,導致數據的虛假行。下面介紹獲取客戶端的IP和MAC地址的方法,僅供參考:

獲取客戶端IP:

private string GetClientIP()
{
   string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
   if (null == result || result == String.Empty)
   {
    result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
   }
   if (null == result || result == String.Empty)
   {
    result = HttpContext.Current.Request.UserHostAddress;
   }
   return result;
}

獲取MAC地址:

  [DllImport("Iphlpapi.dll")]
  private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
  [DllImport("Ws2_32.dll")]
  private static extern Int32 inet_addr(string ip);
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此處放置用戶代碼以初始化頁面
   try
   {
    string userip=Request.UserHostAddress;
    string strClientIP = Request.UserHostAddress.ToString().Trim();
    Int32 ldest = inet_addr(strClientIP); //目的地的ip
    Int32 lhost = inet_addr("");   //本地服務器的ip
    Int64 macinfo = new Int64();
    Int32 len = 6;
    int res = SendARP(ldest,0, ref macinfo, ref len);
    string mac_src=macinfo.ToString("X");
    if(mac_src == "0")
    {
     if(userip=="127.0.0.1")
      Response.Write ("正在訪問Localhost!");
     else
      Response.Write ("歡迎來自IP為" + userip + "的朋友!" + "<br>");
     return;
    }
    while(mac_src.Length<12)
    {
     mac_src = mac_src.Insert(0,"0");
    }
    string mac_dest="";
    for(int i=0;i<11;i++)
    {
     if (0 == (i % 2))
     {
      if ( i == 10 )
      {
       mac_dest = mac_dest.Insert(0,mac_src.Substring(i,2));
      }
      else
      {
       mac_dest ="-" + mac_dest.Insert(0,mac_src.Substring(i,2));
      }
     }
    }
    Response.Write ("歡迎來自IP為"+userip+ "<br>" + ",MAC地址為"+mac_dest+"的朋友!" + "<br>");
   }
   catc   (Exception err)
   {
    Response.Write(err.Message);
   }
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM