ubid
Version:
A browser identification library.
54 lines (38 loc) • 2 kB
Markdown
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.