Roll your own bot detection: fingerprinting/JavaScript
blog.castle.io