Comment by walrus01
JS to check user agent things like screen window dimensions as well, which legit browsers will have and bots will also present but with a more uniform and predictable set of x and y dimensions per set of source IPs. Lots of possibilities for js endpoint fingerprinting.
I also present a uniform and predictable set of x and y dimensions per source IPs as a human user who maximizes my browser window