jackspirou/clientjs

navigator.plugins.refresh is not a function

Closed this issue · 4 comments

I'm having trouble with your plugin on multiple browsers and operating systems. I'm getting an error navigator.plugins.refresh is not a function

These are some of the useragents that show this error:

Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4210.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.133 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.101 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3948.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 OPR/75.0.3969.93
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.69 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.7 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3953.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.60 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.2 Safari/605.1.15
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4158.1 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Safari/605.1.15
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15

The code I'm using is this:

let cljsObj = {}
      try {
        // populating clientjs fingerprint components
        let clientJS = new ClientJS()

        cljsObj.vl_fp_cljs_browser = clientJS.getBrowserData() ? clientJS.getBrowserData() : 'unknown'
        cljsObj.vl_fp_cljs_language = clientJS.getLanguage() ? clientJS.getLanguage() : 'unknown'
        // parse CLJS data for other parameters

        cljsObj.cl_browser =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.browser && cljsObj.vl_fp_cljs_browser.browser.name
            ? cljsObj.vl_fp_cljs_browser.browser.name
            : 'unknown'
        cljsObj.cl_browser_version =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.browser && cljsObj.vl_fp_cljs_browser.browser.version
            ? cljsObj.vl_fp_cljs_browser.browser.version
            : 'unknown'
        cljsObj.cl_browser_major =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.browser && cljsObj.vl_fp_cljs_browser.browser.major
            ? cljsObj.vl_fp_cljs_browser.browser.major
            : 'unknown'
        cljsObj.cl_device =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.device && cljsObj.vl_fp_cljs_browser.device.type
            ? cljsObj.vl_fp_cljs_browser.device.type.toUpperCase()
            : 'DESKTOP'
        cljsObj.cl_device_model =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.device && cljsObj.vl_fp_cljs_browser.device.model
            ? cljsObj.vl_fp_cljs_browser.device.model
            : 'unknown'
        cljsObj.cl_device_vendor =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.device && cljsObj.vl_fp_cljs_browser.device.vendor
            ? cljsObj.vl_fp_cljs_browser.device.vendor
            : 'unknown'
        cljsObj.cl_os =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.os && cljsObj.vl_fp_cljs_browser.os.name ? cljsObj.vl_fp_cljs_browser.os.name : 'unknown'
        cljsObj.cl_os_version =
          cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.os && cljsObj.vl_fp_cljs_browser.os.version
            ? cljsObj.vl_fp_cljs_browser.os.version
            : 'unknown'
        cljsObj.cl_ua = cljsObj.vl_fp_cljs_browser && cljsObj.vl_fp_cljs_browser.ua ? cljsObj.vl_fp_cljs_browser.ua : 'unknown'
        cljsObj.cl_language = cljsObj.vl_fp_cljs_language ? cljsObj.vl_fp_cljs_language : 'unknown'

        cljsObj.vl_fp_cljs_device = clientJS.getDeviceType() ? clientJS.getDeviceType() : 'unknown'
        cljsObj.vl_fp_cljs_devicetype = clientJS.getDeviceType() ? clientJS.getDeviceType() : 'unknown'
        cljsObj.vl_fp_cljs_canvas = clientJS.getCanvasPrint() ? clientJS.getCanvasPrint() : 'unknown'
        cljsObj.vl_fp_cljs_plugins = clientJS.getPlugins() ? clientJS.getPlugins() : 'unknown'
        cljsObj.vl_fp_cljs_screen = clientJS.getScreenPrint() ? clientJS.getScreenPrint() : 'unknown'
        cljsObj.vl_fp_cljs_cpu = clientJS.getCPU() ? clientJS.getCPU() : 'unknown'
        cljsObj.vl_fp_cljs_isMobile = clientJS.isMobile() ? clientJS.isMobile() : 'unknown'
        cljsObj.vl_fp_cljs_isMobileIOS = clientJS.isMobileIOS() ? clientJS.isMobileIOS() : 'unknown'

        cljsObj.vl_fp_cljs_isMobileAndroid = clientJS.isMobileAndroid() ? clientJS.isMobileAndroid() : 'unknown'
        cljsObj.vl_fp_cljs_mimetypes = clientJS.getMimeTypes() ? clientJS.getMimeTypes() : 'unknown'
        cljsObj.vl_fp_cljs_fonts = clientJS.getFonts() ? clientJS.getFonts() : 'unknown'
        cljsObj.vl_fp_cljs_localstorage = clientJS.isLocalStorage() ? clientJS.isLocalStorage() : 'unknown'
        cljsObj.vl_fp_cljs_sessionstorage = clientJS.isSessionStorage() ? clientJS.isSessionStorage() : 'unknown'
        cljsObj.vl_fp_cljs_timezone = clientJS.getTimeZone() ? clientJS.getTimeZone() : 'unknown'
        cljsObj.vl_fp_cljs_systemlanguage = clientJS.getSystemLanguage() ? clientJS.getSystemLanguage() : 'unknown'

        cljsObj.vl_fp_cljs_cookie = clientJS.isCookie() ? clientJS.isCookie() : 'unknown'
        cljsObj.vl_fp_cljs_java = clientJS.getJavaVersion() ? clientJS.getJavaVersion() : 'unknown'
        cljsObj.vl_fp_cljs_flash = clientJS.getFlashVersion() ? clientJS.getFlashVersion() : 'unknown'
        cljsObj.vl_fp_cljs_silverlight = clientJS.getSilverlightVersion() ? clientJS.getSilverlightVersion() : 'unknown'

        // cljsObj.cl_browser = get(cljsObj, 'vl_fp_cljs_browser.browser.name', 'unknown');
        // cljsObj.cl_browser_version = get(cljsObj, 'vl_fp_cljs_browser.browser.version', 'unknown');
        // cljsObj.cl_browser_major = get(cljsObj, 'vl_fp_cljs_browser.browser.major', 'unknown');
        // cljsObj.cl_device = get(cljsObj, 'vl_fp_cljs_browser.device.type', 'DESKTOP').toUpperCase();
        // cljsObj.cl_device_model = get(cljsObj, 'vl_fp_cljs_browser.device.model', 'unknown');
        // cljsObj.cl_device_vendor = get(cljsObj, 'vl_fp_cljs_browser.device.vendor', 'unknown');
        // cljsObj.cl_os = get(cljsObj, 'vl_fp_cljs_browser.os.name', 'unknown');
        // cljsObj.cl_os_version = get(cljsObj, 'vl_fp_cljs_browser.os.version', 'unknown');
        // cljsObj.cl_ua = get(cljsObj, 'vl_fp_cljs_browser.ua', 'unknown');
        // cljsObj.cl_language = get(cljsObj, 'vl_fp_cljs_language', 'unknown');

        cljsObj.vl_fp_cljs = clientJS.getCustomFingerprint(
          cljsObj.vl_fp_cljs_browser,
          cljsObj.vl_fp_cljs_device,
          cljsObj.vl_fp_cljs_devicetype,
          cljsObj.vl_fp_cljs_canvas,
          cljsObj.vl_fp_cljs_plugins,
          cljsObj.vl_fp_cljs_screen,
          cljsObj.vl_fp_cljs_cpu,
          cljsObj.vl_fp_cljs_isMobile,
          cljsObj.vl_fp_cljs_isMobileIOS,
          cljsObj.vl_fp_cljs_isMobileAndroid,
          cljsObj.vl_fp_cljs_mimetypes,
          cljsObj.vl_fp_cljs_fonts,
          cljsObj.vl_fp_cljs_localstorage,
          cljsObj.vl_fp_cljs_sessionstorage,
          cljsObj.vl_fp_cljs_timezone,
          cljsObj.vl_fp_cljs_language,
          cljsObj.vl_fp_cljs_systemlanguage,
          cljsObj.vl_fp_cljs_cookie,
          cljsObj.vl_fp_cljs_java,
          cljsObj.vl_fp_cljs_flash,
          cljsObj.vl_fp_cljs_silverlight
        )

        cljsObj.vl_fp_canvas_only = clientJS.getCustomFingerprint(cljsObj.vl_fp_cljs_canvas)

        cljsObj = omit(cljsObj, ['vl_fp_cljs_canvas', 'vl_fp_cljs_fonts', 'vl_fp_cljs_browser'])
        let userData = this.state.userData
        Object.assign(userData, cljsObj)
        this.setState({
          userData: userData
        })
        // window.qubiq_profile_add(cljsObj);
      } catch (err) {
        console.error('cljs error', err.message)
        console.error('cljs_error', err.stack)
        tracker.error(err.message)
       
      }

This is due to the usage of a bundle that contains Java plugin detection code. Do you actually need Java detection? Java plugin is dead in most browsers. Try to use one of the other bundles: https://github.com/jackspirou/clientjs#bundles. This is not released yet, so you'll have to install ClientJS from master:

npm install https://github.com/jackspirou/clientjs.git#master

Ok, I deleted the module first, then tried installing with npm install https://github.com/jackspirou/clientjs.git#master and I get an error:

> clientjs@0.1.11 postinstall /home/dusnoki/code/stanley/node_modules/clientjs
> node scripts/install.js

internal/modules/cjs/loader.js:818
  throw err;
  ^

Error: Cannot find module '/home/dusnoki/code/stanley/node_modules/clientjs/scripts/install.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
    at Function.Module._load (internal/modules/cjs/loader.js:667:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

had to run it with --ignore-scripts flag

This should be fixed now, would you mind to try again?

Please try out the new release (https://github.com/jackspirou/clientjs/releases/tag/v0.2.0). Feel free to reopen this ticket if you still have problems.