mac地址校验/浏览器指纹验证(fingerprintjs2)

饶志
2023-12-01

mac地址与浏览器指纹使用与区别

前段时间在开发中使用到用mac地址进行设备唯一验证登录,后改用成指纹验证(fingerprintjs2),在此总结记录下,希望得到补充与指正。

mac地址

  • 据说获取mac地址有很多种方法 ActiveX、Flash、applet,这里使用到是ActiveX
  • 缺点
    • MAC 地址是全球唯一的网络设备标示,但是它可以被人工修改,所以使用并不够靠谱;
    • ActiveX 只能在ie下使用;
    • ActiveX默认是关闭的,使用时需要用户先手动设置打开,(在浏览器internet选项->安全->自定义级别->对未标记为安全执行执行脚本的ActiveX控件初始化并执行脚本->启用);
    • 浏览器会弹出设置不安全提示;
    • 总体限制性太大了;

  • 直接上代码啦~
    // 创建ActiveX对象
    var locator = new ActiveXObject("WbemScripting.SWbemLocator");
    var service = locator.ConnectServer(".");
    var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
    var e = new Enumerator(properties);
    let MacAddressIp = [];
    // 获取mac地址 可能会出现有多个的情况
    for (; !e.atEnd(); e.moveNext()) {
        var p = e.item();
        if (p.MACAddress !== null) {
            MacAddressIp.push(p.MACAddress)
        }
    }
复制代码

顺便放上获取电脑配置代码啦

    function getSysInfo(){
    var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
    var service = locator.ConnectServer(".");
    //CPU信息
    var cpu = new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();
    var cpuType=cpu.Name,hostName=cpu.SystemName;
    //内存信息
    var memory = new Enumerator (service.ExecQuery("SELECT * FROM Win32_PhysicalMemory"));
    for (var mem=[],i=0; !memory.atEnd(); memory.moveNext()) mem[i++]={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed}
    //系统信息
    var system=new Enumerator (service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item();
    var physicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors
    return {cpuType:cpuType,cpuCount:cpuCount,hostName:hostName,curUser:curUser,memCap:physicMenCap,mem:mem}
}
复制代码

浏览器指纹验证(fingerprintjs2)

浏览器指纹是什么?

也就是根据浏览器,系统当前配置,等等给浏览器生成一个唯一的32位码,来进行验证;

安装

使用CDN在线获取:

<script src="https://cdnjs.com/libraries/fingerprintjs2"></script>
复制代码

使用bowerinstall命令进行安装:

bower install fingerprintjs2 
复制代码

使用npminstall命令进行安装:

npm install fingerprintjs2 --save--dev
复制代码

使用

import Fingerprint2 from 'fingerprintjs2'
    // 使用浏览器指纹
    var MacAddress;
    new Fingerprint2({
        // 配置项(可选)
        excludeSessionStorage: true, // 排除会话存储用户的浏览器支持
        excludeOpenDatabase: true, // 排除式用户浏览器的支持
        excludeIndexedDB: true, // 排除IndexedDB用户浏览器的支持
        excludeLanguage: true, // 排除浏览器的语言
        userAgent: true, // 用户代理,包含浏览器版本号
    }).get(function(result, components){
        MacAddress = result;
    });
复制代码

配置项完整列表

缺点

  • 有几率会出现重复的;
  • 切换浏览器或修改系统配置可能使指纹码改变;

最后

写的比较凌乱,有更好的方法,欢迎补充啦;

 类似资料: