如何检测用户访问我网站的浏览器(IE,Firefox,Opera)? Javascript,PHP,ASP,Python,JSP以及您能想到的任何其他示例都会有所帮助。是否有与语言无关的方式来获取此信息?
答案 0 :(得分:10)
如果是处理请求,请查看传入请求的User-Agent标题。
更新:如果是报告,请配置您的Web服务器以在访问日志中记录User-Agent,然后运行日志分析工具,例如AWStats。
更新2:仅供参考,通常 <通常(通常不总是)改变基于用户代理处理请求的方式是个坏主意。
答案 1 :(得分:5)
答案 2 :(得分:3)
您可以查看他们发送的User-Agent。请注意,你可以发送你想要的任何代理,这不是100%万无一失,但大多数人不会改变它,除非有特定的理由。
答案 3 :(得分:1)
快速而脏的java servlet示例
private String getBrowserName(HttpServletRequest request) {
// get the user Agent from request header
String userAgent = request.getHeader(Constants.BROWSER_USER_AGENT);
String BrowesrName = "";
//check for Internet Explorer
if (userAgent.indexOf("MSIE") > -1) {
BrowesrName = Constants.BROWSER_NAME_IE;
} else if (userAgent.indexOf(Constants.BROWSER_NAME_FIREFOX) > -1) {
BrowesrName = Constants.BROWSER_NAME_MOZILLA_FIREFOX;
} else if (userAgent.indexOf(Constants.BROWSER_NAME_OPERA) > -1) {
BrowesrName = Constants.BROWSER_NAME_OPERA;
} else if (userAgent.indexOf(Constants.BROWSER_NAME_SAFARI) > -1) {
BrowesrName = Constants.BROWSER_NAME_SAFARI;
} else if (userAgent.indexOf(Constants.BROWSER_NAME_NETSCAPE) > -1) {
BrowesrName = Constants.BROWSER_NAME_NETSCAPE;
} else {
BrowesrName = "Undefined Browser";
}
//return the browser name
return BrowesrName;
}
答案 4 :(得分:1)
您可以在ASP.NET中使用HttpBrowserCapabilities类。以下是此link
的示例private void Button1_Click(object sender, System.EventArgs e)
{
HttpBrowserCapabilities bc;
string s;
bc = Request.Browser;
s= "Browser Capabilities" + "\n";
s += "Type = " + bc.Type + "\n";
s += "Name = " + bc.Browser + "\n";
s += "Version = " + bc.Version + "\n";
s += "Major Version = " + bc.MajorVersion + "\n";
s += "Minor Version = " + bc.MinorVersion + "\n";
s += "Platform = " + bc.Platform + "\n";
s += "Is Beta = " + bc.Beta + "\n";
s += "Is Crawler = " + bc.Crawler + "\n";
s += "Is AOL = " + bc.AOL + "\n";
s += "Is Win16 = " + bc.Win16 + "\n";
s += "Is Win32 = " + bc.Win32 + "\n";
s += "Supports Frames = " + bc.Frames + "\n";
s += "Supports Tables = " + bc.Tables + "\n";
s += "Supports Cookies = " + bc.Cookies + "\n";
s += "Supports VB Script = " + bc.VBScript + "\n";
s += "Supports JavaScript = " + bc.JavaScript + "\n";
s += "Supports Java Applets = " + bc.JavaApplets + "\n";
s += "Supports ActiveX Controls = " + bc.ActiveXControls + "\n";
TextBox1.Text = s;
}
答案 5 :(得分:1)
PHP的预定义超全局数组$ _SERVER包含一个键“HTTP_USER_AGENT”,其中包含HTTP请求中发送的User-Agent标头的值。 请记住,这是用户提供的数据,不受信任。很少有用户更改其用户代理字符串,但确实会不时发生。
答案 6 :(得分:1)
在客户端,您可以使用navigation.userAgent对象在Javascript中执行此操作。这是一个粗略的例子:
if (navigator.userAgent.indexOf("MSIE") > -1)
{
alert("Internet Explorer!");
}
else if (navigator.userAgent.indexOf("Firefox") > -1)
{
alert("Firefox!");
}
可在此处找到更详细,更全面的示例: http://www.quirksmode.org/js/detect.html
请注意,如果您为了Javascript兼容性而进行浏览器检测,通常最好只使用对象检测或try / catch块,以免您想到的某些版本漏掉了脚本。 例如,而不是这样做......
if(navigator.userAgent.indexOf("MSIE 6") > -1)
{
objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
objXMLHttp = new XMLHttpRequest();
}
......这样更好:
if(window.XMLHttpRequest) // Works in Firefox, Opera, and Safari, maybe latest IE?
{
objXMLHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) // If the above fails, try the MSIE 6 method
{
objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
答案 7 :(得分:0)
可能取决于您的设置。在linux上使用apache,它写在访问日志/ var / log / apache2 / access_log
中答案 8 :(得分:0)
您可以通过以下方式执行此操作:
- 查看Web服务器日志,或
- 在处理之前查看HTML请求中的User-Agent字段(纯文本流)。
答案 9 :(得分:0)
首先,我想指出,最好避免修补特定的网络浏览器,除非作为最后的结果 - 使用符合标准的HTML / CSS / JS实现跨浏览器兼容性(是的,javascript确实有一个共同的分母子集,适用于所有主流浏览器)。
据说,HTTP请求标头中的user-agent标签包含客户端(声明的)浏览器。虽然由于人们反对特定的浏览器而不是规范,这已成为一个真正的混乱,所以确定真正的浏览器可能有点棘手。
与此相符:
包含浏览器
Firefox - &gt;火狐
MSIE - &gt; Internet Explorer
Opera - &gt; Opera(少数浏览器之一,不假装是Mozilla :))
大多数包含“bot”或“crawler”字样的代理通常是机器人(所以你可以从日志/等中省略它)
答案 10 :(得分:0)
结帐browsecap.ini。链接的站点包含多种脚本语言的文件。 browsecap不仅识别用户代理,还有关于浏览器的CSS支持,JS支持,操作系统(如果是移动浏览器等)的信息。
巡航到this page以查看browsecap.ini可以告诉您当前浏览器的信息示例。