mac地址校驗/瀏覽器指紋驗證(fingerprintjs2)

mac地址與瀏覽器指紋使用與區別

前段時間在開發中使用到用mac地址進行設備惟一驗證登陸,後改用成指紋驗證(fingerprintjs2),在此總結記錄下,但願獲得補充與指正。git

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位碼,來進行驗證;github

安裝

使用CDN在線獲取:npm

<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;
    });
複製代碼

配置項完整列表bash

缺點

  • 有概率會出現重複的;
  • 切換瀏覽器或修改系統配置可能使指紋碼改變;

最後

寫的比較凌亂,有更好的方法,歡迎補充啦;網絡

相關文章
相關標籤/搜索