A site I'm working on tracks users before they sign up or log in to determine things like which pages drive the most users to sign up for the service, etc.
Currently we make use of a browser fingerprinting library. We fingerprint the browser, save the result in a cookie, and use this cookie to uniquely determine users. However, many browsers end up computing the same fingerprint as other browsers. eg. We see a lot of the same fingerprint from Safari on an iPad, even though it's distinct iPads.
We only use the fingerprint on our own first-party site, so I'm thinking that perhaps fingerprinting wasn't even the correct approach to begin with. I'm thinking of switching to a system where the server hands out unique tokens to each client. The client would store the received token as a cookie in place of the old fingerprint, and if it already has one of these server-side created tokens, then it ignores the new one, or maybe doesn't request it in the first place.
Does this plan make sense? Am I overlooking anything obvious?
I'm aware that inclined users can read though our client side code and change the values of their cookies to mess with us. I'm not worried about that small percentage of users, this is to get a broad picture of what's going on with the site.