@social engineer there are things that browser fingerprint looks at.
They are your hardware settings and ability, timezone, screen depth, windows depth, canvas, audio, etc.
All those things can easily be changed on any browser by doing a custom browser, but the last thing that most people fail to think is the one where it can easily be avoided if you used requests.
Strong fingerprint will always look for if you lied about your User-Agent by checking certain arcane features found uniquely on that specific browser family. These are checks that you can't fake without changing the whole css engine, and other things that make it very hard to change without looking into closed source browsers and replicating it on your own custom build browser.
These are so many arcane features out there that it's almost impossible to figure all them out without looking at the javascript source from the fingerprint solutions.
Take a look at fingerprint2.js
Code:
var tempRes = eval.toString().length
if (tempRes === 37 && browser !== 'Safari' && browser !== 'Firefox' && browser !== 'Other') {
return true
} else if (tempRes === 39 && browser !== 'Internet Explorer' && browser !== 'Other') {
return true
} else if (tempRes === 33 && browser !== 'Chrome' && browser !== 'Opera' && browser !== 'Other') {
return true
}
You can't evade that on your custom headless browser without re implementing the eval() function, which am sure you haven't even thought of doing. Boom, as soon as you change into a Safari or Firefox User-Agent on your Chrome headless browser you are screwed.