UNPKG

ubid

Version:

A browser identification library.

54 lines (38 loc) 2 kB
ubid - Unique Browser ID ==== Attempts to generate a number of unique identifiers for a given browser. These identifiers are useful for when cookies and/or local storage have been disabled. For instance, Apple has started doing this for all third-party websites shown in iframes. Although that may help privacy to some degree (arguably, not enough of a degree given this module), it can also render parts of sites unusable for legitimate purposes to users. ```javascript var ubid = require( 'ubid' ); ubid.get( function( error, signatureData ) { if ( error ) { console.error( error ); return; } // dump for example console.log( signatureData ); } ); ``` Would produce: ```javascript { "random": { "signature": "0d9444a0-c566-4c87-a2c6-406b2e12a26a" }, "browser": { "signature": "fe90bcf955cc65b51f1adc1ca374f163e09a29c6d173e25c783c9c5c77badada" }, "canvas": { "signature": "db5991b6bb503650bf69b285a6c0f895f11b73c135c112905241f60835be2652" }, "localStorage":true } ``` Let's break them down: * random This is a random guid assigned to the browser. This will change each time *unless* localStorage is true, in which case this is the best identifier to use since it is almost certainly guaranteed to be unique and to persist. This is also a best case for private browsing modes in that this id will differ from normal browsing (this is normally desirable). * canvas This is a unique id generated by rendering some fonts and colors to an HTML5 canvas and hashing the result. According to various sources (eg: https://www.browserleaks.com/canvas) this can be a fairly reliable unique identifier due to the variances in how different graphics cards and systems will render the results. * browser This is a unique id generated by joining and hashing a number of browser attributes. This is most likely the least unique identifier and should be the last resort for identifing a particular user/browser.