PPK提供的浏览器类型及版本检测方法

简介: 一个常用但是被高估的Javascript函数就是浏览器检测。有些时候,你想给出一个说明或者加载一个页面来提示用户,以免使用Safari等浏览器。 使用方法: Browser name: BrowserDetect.

      一个常用但是被高估的Javascript函数就是浏览器检测。有些时候,你想给出一个说明或者加载一个页面来提示用户,以免使用Safari等浏览器。

使用方法:

Browser name: BrowserDetect.browser 
Browser version: BrowserDetect.version 
OS name: BrowserDetect.OS 

 

var  BrowserDetect  =  {
    init: 
function  () {
        
this .browser  =   this .searchString( this .dataBrowser)  ||   " An unknown browser " ;
        
this .version  =   this .searchVersion(navigator.userAgent)
            
||   this .searchVersion(navigator.appVersion)
            
||   " an unknown version " ;
        
this .OS  =   this .searchString( this .dataOS)  ||   " an unknown OS " ;
    },
    searchString: 
function  (data) {
        
for  ( var  i = 0 ;i < data.length;i ++ )    {
            
var  dataString  =  data[i].string;
            
var  dataProp  =  data[i].prop;
            
this .versionSearchString  =  data[i].versionSearch  ||  data[i].identity;
            
if  (dataString) {
                
if  (dataString.indexOf(data[i].subString)  !=   - 1 )
                    
return  data[i].identity;
            }
            
else   if  (dataProp)
                
return  data[i].identity;
        }
    },
    searchVersion: 
function  (dataString) {
        
var  index  =  dataString.indexOf( this .versionSearchString);
        
if  (index  ==   - 1 return ;
        
return  parseFloat(dataString.substring(index + this .versionSearchString.length + 1 ));
    },
    dataBrowser: [
        {
            string: navigator.userAgent,
            subString: 
" Chrome " ,
            identity: 
" Chrome "
        },
        {     string: navigator.userAgent,
            subString: 
" OmniWeb " ,
            versionSearch: 
" OmniWeb/ " ,
            identity: 
" OmniWeb "
        },
        {
            string: navigator.vendor,
            subString: 
" Apple " ,
            identity: 
" Safari " ,
            versionSearch: 
" Version "
        },
        {
            prop: window.opera,
            identity: 
" Opera "
        },
        {
            string: navigator.vendor,
            subString: 
" iCab " ,
            identity: 
" iCab "
        },
        {
            string: navigator.vendor,
            subString: 
" KDE " ,
            identity: 
" Konqueror "
        },
        {
            string: navigator.userAgent,
            subString: 
" Firefox " ,
            identity: 
" Firefox "
        },
        {
            string: navigator.vendor,
            subString: 
" Camino " ,
            identity: 
" Camino "
        },
        {        
//  for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: 
" Netscape " ,
            identity: 
" Netscape "
        },
        {
            string: navigator.userAgent,
            subString: 
" MSIE " ,
            identity: 
" Explorer " ,
            versionSearch: 
" MSIE "
        },
        {
            string: navigator.userAgent,
            subString: 
" Gecko " ,
            identity: 
" Mozilla " ,
            versionSearch: 
" rv "
        },
        {         
//  for older Netscapes (4-)
            string: navigator.userAgent,
            subString: 
" Mozilla " ,
            identity: 
" Netscape " ,
            versionSearch: 
" Mozilla "
        }
    ],
    dataOS : [
        {
            string: navigator.platform,
            subString: 
" Win " ,
            identity: 
" Windows "
        },
        {
            string: navigator.platform,
            subString: 
" Mac " ,
            identity: 
" Mac "
        },
        {
               string: navigator.userAgent,
               subString: 
" iPhone " ,
               identity: 
" iPhone/iPod "
        },
        {
            string: navigator.platform,
            subString: 
" Linux " ,
            identity: 
" Linux "
        }
    ]

};
BrowserDetect.init();
相关文章
|
5月前
|
数据采集 前端开发 JavaScript
深挖navigator.webdriver浏览器自动化检测的底层分析
本文详细讲解了如何通过技术手段破解浏览器 `navigator.webdriver` 检测,结合爬虫代理、多线程等策略,在豆瓣图书页面批量采集数据。具体包括:隐藏 Selenium 特征、配置代理突破 IP 限制、设置伪装用户、利用多线程提升效率。文章面向初学者,提供分步教程与示例代码,同时设有「陷阱警告」帮助规避常见问题。目标是从底层实现反检测,高效采集图书评分、简介、作者等信息,适合具备 Python 和 Selenium 基础的读者实践学习。
174 12
深挖navigator.webdriver浏览器自动化检测的底层分析
|
11月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
6月前
|
数据采集 JavaScript 前端开发
浏览器自动化检测对抗:修改navigator.webdriver属性的底层实现
本文介绍了如何构建一个反检测爬虫以爬取Amazon商品信息。通过使用`undetected-chromedriver`规避自动化检测,修改`navigator.webdriver`属性隐藏痕迹,并结合代理、Cookie和User-Agent技术,实现稳定的数据采集。代码包含浏览器配置、无痕设置、关键词搜索及数据提取等功能,同时提供常见问题解决方法,助你高效应对反爬策略。
469 1
|
11月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
1234 9
|
11月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
838 1
|
12月前
|
Web App开发 开发者
|
12月前
|
算法 安全 前端开发
基于postMessage和BroadcastChannel实现浏览器跨Tab窗口通信的方法介绍
基于postMessage和BroadcastChannel实现浏览器跨Tab窗口通信的方法介绍
366 0
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
665 1
|
移动开发 前端开发 JavaScript
解决浏览器兼容性问题的方法
解决浏览器兼容性问题的方法
|
移动开发 前端开发 JavaScript
解决浏览器兼容性问题的方法
解决浏览器兼容性问题的方法