ASP获取访客真实IP、浏览器及操作系统信息

网络整理 - 09-04
获取客户端真实IP地址的方法:

<% 
''此参数是取得透过代理服务器的客户端IP 
IP=Request.ServerVariables("Http_X_ForWarded_For") 
If Len(IP)=0 Then 
Response.write "非代理服务器<p>" 
''直接取得客户端的IP 
IP=Request.ServerVariables("Remote_Addr") 
Response.write "IP:"&IP 
Else 
Response.write "代理服务器:"&IP&"<p>" 
End If
%>



获取客户端浏览器和操作系统信息的五种方法:

第一种方法:

<Script language="Vbscript">
''=首先,穷举法:用VBS中的Navigator.appVersion(或者.UserAgent)属性= 
''=此种方法可以在客户端显示,但是不可以保存到服务器端数据库里=
Document.write Navigator.appVersion&"<p>"
Function Browser(Info) 
Info=Navigator.appVersion''在这里初始化了Info,在实际应用中可以作为其他变量赋值 
If InStr(Info,"MSIE 6")>0 Then 
Browser="Internet Explorer 6.0" 
ElseIf InStr(Info,"MSIE 5.5")>0 Then 
Browser="Internet Explorer 5.5" 
ElseIf InStr(Info,"MSIE 5.0")>0 Then 
Browser="Internet Explorer 5.0" 
ElseIf InStr(Info,"MSIE 4")>0 Then 
Browser="Internet Explorer 4.0" 
Else 
Browser="未知的浏览器"
End if 
Document.Write "您的浏览器是:"&Browser&"<p>"
End Function
Function System(Info) 
Info=Navigator.appVersion 
If InStr(Info,"NT 5.1")>0 Then 
System="Windows XP" 
ElseIf InStr(Info,"NT 5.0")>0 Then 
System="Windows 2000" 
ElseIf InStr(Info,"NT 4")>0 Then 
System="Windows NT" 
ElseIf InStr(Info,"98")>0 Then 
System="Windows 98" 
ElseIf InStr(Info,"Me")>0 Then 
System="Windows Me" 
ElseIf InStr(Info,"95")>0 Then 
System="Windows 95" 
Else 
System="未知的操作系统" 
End if 
Document.Write "您的操作系统是:"&System
End Function
Call Browser(Info) 
Call System(Info)
</Script>



第二种方法:

<% 
''=其次:用Request.ServerVariables("Http_User_Agent")=
Response.Write Request.ServerVariables("Http_User_Agent")&"<p>"
Function Browser(Info) 
Info=Request.ServerVariables("Http_User_Agent")''在这里初始化了Info,在实际应用中可以作为其他变量赋值 
If InStr(Info,"MSIE 6")>0 Then 
Browser="Internet Explorer 6.0" 
ElseIf InStr(Info,"MSIE 5.5")>0 Then 
Browser="Internet Explorer 5.5" 
ElseIf InStr(Info,"MSIE 5.0")>0 Then 
Browser="Internet Explorer 5.0" 
ElseIf InStr(Info,"MSIE 4")>0 Then 
Browser="Internet Explorer 4.0" 
Else 
Browser="未知的浏览器" 
End if 
Response.Write "您的浏览器是:"&Browser&"<p>"
End Function
Function System(Info) 
Info=Request.ServerVariables("Http_User_Agent") 
If InStr(Info,"NT 5.1")>0 Then 
System="Windows XP" 
ElseIf InStr(Info,"NT 5.0")>0 Then 
System="Windows 2000" 
ElseIf InStr(Info,"NT 4")>0 Then 
System="Windows NT" 
ElseIf InStr(Info,"98")>0 Then 
System="Windows 98" 
ElseIf InStr(Info,"Me")>0 Then 
System="Windows Me" 
ElseIf InStr(Info,"95")>0 Then 
System="Windows 95" 
Else 
System="未知的操作系统" 
End if 
Response.Write "您的操作系统是:"&System
End Function
Call Browser(Info) 
Call System(Info)
%>



第三种方法:

<% 
''第三种方法:在appVersion/UserAgent或Request.ServerVariables("Http_User_Agent") 
''=之中截取固定的字符串,把有关浏览器和操作系统的字符串截取出并显示= 
''=显然问题在于,如果某一天Microsoft把浏览器版本的格式改变了,那么此方法会出错 
''=格式:浏览器版本-左数第31个字符起3个字符,系统版本-左数第44个字符起6个字符
Response.Write Request.ServerVariables("Http_User_Agent")&"<p>"
Function Browser2(Info) 
Info=Request.ServerVariables("Http_User_Agent") 
If InStr(Info,"MSIE")>0 Then''判断当前浏览器是否是"Microsoft IE"类型 
Version=Mid(Info,31,3) 
IE="Internet Explorer" 
Response.Write "您的浏览器是:"&IE&" "&Version&"<p>" 
Else 
Response.Write "您的浏览器是:未知的浏览器<p>" 
End if 
End Function
Function System2(Info) 
Info=Request.ServerVariables("Http_User_Agent") 
If InStr(Info,"Windows")>0 Then''判断当前操作系统是否是"Windows"平台 
Version=Mid(Info,44,6) 
Plat="Windows" 
''下面还要进行判断版本,以供显示具体的平台 
If InStr(Version,"NT 5.1")>0 Then 
Plat="Windows XP" 
ElseIf InStr(Version,"NT 5.0")>0 Then 
Plat="Windows 2000" 
ElseIf InStr(Version,"NT 4")>0 Then 
Plat="Windows NT" 
ElseIf InStr(Version,"98")>0 Then 
Plat="Windows 98" 
ElseIf InStr(Version,"Me")>0 Then 
Plat="Windows Me" 
ElseIf InStr(Version,"95")>0 Then 
Plat="Windows 95" 
Else 
Plat="未知的操作系统" 
End if 
Response.Write "您的操作系统是:"&Plat
Else 
Response.Write "您的操作系统是:未知的操作系统" 
End if 
End Function
Call Browser2(Info) 
Call System2(Info)
%>



第四种方法:

<Script Language="VBscript">
Document.Write Navigator.appVersion&"<p>"
Function Browser2(Info) 
Info=Navigator.appVersion 
If InStr(Info,"MSIE")>0 Then''判断当前浏览器是否是"Microsoft IE"类型 
Version=Mid(Info,23,3) 
IE="Internet Explorer" 
Document.Write "您的浏览器是:"&IE&" "&Version&"<p>" 
Else 
Document.Write "您的浏览器是:未知的浏览器<p>"
End if 
End Function
Function System2(Info) 
Info=Navigator.appVersion 
If InStr(Info,"Windows")>0 Then''判断当前操作系统是否是"Windows"平台 
Version=Mid(Info,36,6) 
Plat="Windows" 
''下面还要进行判断版本,以供显示具体的平台 
If InStr(Version,"NT 5.1")>0 Then 
Plat="Windows XP" 
ElseIf InStr(Version,"NT 5.0")>0 Then 
Plat="Windows 2000" 
ElseIf InStr(Version,"NT 4")>0 Then 
Plat="Windows NT" 
ElseIf InStr(Version,"98")>0 Then 
Plat="Windows 98" 
ElseIf InStr(Version,"Me")>0 Then 
Plat="Windows Me" 
ElseIf InStr(Version,"95")>0 Then 
Plat="Windows 95" 
Else 
Plat="未知的操作系统!" 
End if 
Document.Write "您的操作系统是:"&Plat
Else 
Document.Write "您的操作系统是:未知的操作系统" 
End if 
End Function
Call Browser2(Info) 
Call System2(Info)
</Script>



第五种方法:

<% 
''========另外,有人提出利用ASP的ActiveX组件MSWC.BrowserType的属性来实现========== 
''========现在问题是,IE 6.0以上版本的这个组件还没有更新,因此随意使用会出错===== 
''========我们不提倡这种方法===================================================== 
Dim BT 
Set BT=Server.CreateObject("MSWC.BrowserType") 
Response.Write BT.Browser&"<br>" 
Response.Write BT.Version&"<br>" 
Response.Write BT.PlatForm
%>