In today’s world, we all need to have some sense of how well our website is performing, and the least we can do is track our audience – the people that visit our website. This can be accomplished through the use of a third-party service such as Google Analytics, Cloudflare, or other similar services. These, regrettably, expose our visitors to cookies and provide a slew of issues in terms of GDPR and other privacy-protecting legislation in the EU and elsewhere.
Though this strategy may appear to be the simplest when it comes to integrating such functionality into your website, you may also have to deal with legal issues (such as privacy policies, cookie consent, and so on). You may not have had a problem with this if you are already utilizing cookies in some role other than user credentials or XSFR tokens (just like in basic Laravel apps), but if you want to be rid of these third-party cookies, I have another alternative for you.
This method of visitor tracking has a straightforward concept. The purpose is to keep an anonymous record of each day’s unique visits to our website. I’ll use Laravel as an example, but the concept may be applied to other frameworks and languages. This has been tested in standard PHP, but it can also be done in.NET or Python (with some modifications of course).
Anonymization is the key difference between this method and using such third-party solutions in terms of privacy. On the server-side, almost no information about the user is collected. Only the date of the visit and the visitor’s IP address is collected, and only the hash is retained in the database.
The Method of Execution
As straightforward as the concept was, the implementation follows suit. To make this work, we’ll need to create new middleware that checks to see if a visitor has already been registered for the day. If the visitor hasn’t been documented before, the visit will be inserted into the database; otherwise, the visit will be ignored. The middleware compares the visitor’s IP hash against the database hash to see if the visitor has already been registered.