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.
var ubid = require( 'ubid' );
ubid.get( function( error, signatureData ) {
if ( error ) {
console.error( error );
return;
}
// dump for example
console.log( signatureData );
} );
Would produce:
{
"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.