One of the most popular ones is Anubis. It uses a proof of work and can even do poisoning: https://anubis.techaro.lol/
They even mention iocaine. I know, inconceivable!: https://iocaine.madhouse-project.org/
There's also tons of HN posts on the topic with varying solutions:
https://news.ycombinator.com/item?id=45935729
https://news.ycombinator.com/item?id=45711094
Anubis is the only tool that claims to have heuristics to identify a bot, but my understanding is that it does this by presenting obnoxious challenges to all users. Not really feasible. Old school approaches like ip blocking or even ASN blocking are obsolete - these crawlers purposely spam from thousands of IPs, and if you block them on a common ASN, they come back a few days later from thousands of unique ASNs. So this is not really a "roll your own" situation, especially if you are running off the shelf software that doesn't have some straightforward means of building in these various approaches of endless page mazes (which I would still have to serve anyway).