如何檢測用戶正在訪問我的網站的瀏覽器(IE,Firefox,Opera)? Javascript,PHP,ASP,Python,JSP等任何你能想到的例子都會有所幫助。有沒有一種語言不可知的方式來獲取這些信息?如何檢測用於訪問我的網站的瀏覽器?
回答
如果是處理請求,請查看傳入請求中的User-Agent標頭。
更新:如果是用於報告,請將Web服務器配置爲在訪問日誌中記錄用戶代理,然後運行日誌分析工具,例如AWStats。
更新2:僅供參考,通常是(通常不總是)改變處理基於User-Agent的請求的方式的一個壞主意。
你會看看他們發送的User-Agent。請注意,你可以發送任何你想要的代理,所以這不是百分之百的萬無一失,但大多數人不會改變它,除非有特定的理由。
它可能取決於您的設置。在Linux上的Apache,它寫在訪問日誌/ var /日誌/的Apache2 /訪問日誌
你可以這樣做:
- 着眼於Web服務器日誌或
- 看User-Agent字段在處理HTML請求(這是一個純文本流)之前。
一個快速和骯髒的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;
}
可以在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;
}
首先的一個樣本,我想指出,這是最好避免修補針對特定的網絡瀏覽器,除非作爲最後的結果 - 嘗試實現跨瀏覽器兼容性而不是使用符合標準的HTML/CSS/JS(是的,JavaScript確實有一個共同的分母子集,它適用於所有主流瀏覽器)。
即便如此,來自HTTP請求標頭的用戶代理標籤包含客戶端(聲明的)瀏覽器。儘管由於人們針對特定的瀏覽器而不是規範,這已經變得非常糟糕,所以確定真正的瀏覽器可能有點棘手。
對陣這樣的:
包含瀏覽器
火狐 - >火狐
MSIE - > Internet Explorer的
歌劇院 - >歌劇院(爲數不多的瀏覽器之一,這不假裝爲Mozilla :))
大多數包含「bot」或「crawler」字樣的代理通常都是機器人(因此您可以從lo GS /等)
PHP的預定義超全局數組$ _ SERVER包含密鑰「HTTP_USER_AGENT」,其中包含了用戶代理頭的值作爲發送HTTP請求。 請記住,這是用戶提供的數據,不被信任。很少有用戶更改他們的用戶代理字符串,但它確實會不時發生。
在客戶端,您可以使用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");
}
退房browsecap.ini。鏈接的站點具有用於多種腳本語言的文件。瀏覽器不僅可以識別用戶代理,還可以瀏覽器的CSS支持,JS支持,操作系統,如果它的手機瀏覽器等信息。
巡航到this page看到什麼信息的例子browsecap.ini可以告訴你關於你當前的瀏覽器。
- 1. 您如何檢測用於訪問您的網站的瀏覽器/設備?
- 2. 如何讓我的網站檢測某些網頁瀏覽器?
- 3. 入門網站,以檢測我們的手機瀏覽器
- 4. 檢測訪問我們網站的用戶訪問功能
- 5. 使用.Net從瀏覽器中檢測請求的網站url?
- 6. 如何防止用戶使用特定的瀏覽器瀏覽我的網站?
- 7. 如何檢測用戶是否使用CSS從手機瀏覽我的網站?
- 8. 瀏覽器檢測給我
- 9. 檢測用戶在訪問我的網站前在Rails中訪問的網址
- 10. 如何強制用戶打開我的網站在Safari瀏覽器時,他們訪問我的WordPress站點
- 11. 如何檢測使用javascript在webview或瀏覽器中打開的網站
- 12. Safari瀏覽器的網站問題
- 13. 如何使用網絡瀏覽器訪問網站資源文件控制檯
- 14. 使用瀏覽器擴展檢測打開特定網站
- 15. 檢測JavaScript禁用瀏覽器併爲它們分隔網站?
- 16. 使用PHP爲網站檢測手機瀏覽器
- 17. 訪問前檢查您的瀏覽器
- 18. 我的測試網站只適用於Safari和Chrome瀏覽器IE瀏覽器不支持Firefox,請幫忙
- 19. 如何檢測Elm中的瀏覽器
- 20. 測試瀏覽器與我的網站的兼容性
- 21. 將我的iOS應用程序檢測爲網絡瀏覽器
- 22. 如何在我的網站上使用瀏覽器指紋?
- 23. 我瀏覽網頁時如何訪問網頁的資源?
- 24. 如何檢測用戶訪問的外部網站
- 25. 訪問當前顯示的Android瀏覽器網站
- 26. 如何檢測用戶瀏覽器上的證書問題
- 27. 瀏覽器檢測
- 28. 瀏覽器檢測
- 29. 瀏覽器檢測
- 30. 如何檢測其用戶訪問我的網站的Android或iPhone?
語言不可知的?從這些例子中,我認爲你有你的答案。 – 2008-09-23 14:21:36
恕我直言,它似乎是一個確切的副本從http://stackoverflow.com/questions/100898/browser-detection – gizmo 2008-09-23 14:21:38
弗蘭克,在這些語言的例子會很好(特別是Javascript和PHP,對我來說),但我想知道是否有辦法做到這一點,並不是針對任何單一語言。 – 2008-09-23 14:23:51