There's no real way to defend against that except to make the website private and only allow access to those you validate IRL...
There's a neat trick, though. As far as I observed, the vast majority of those real browsers from residential IP scrapers are all following a crawling queue collected by simpler, easier to identify bots. So if you can poison the queue, you can block an IP after looking at one request path. That's a big save. No need to serve those, no need to do a TLS handshake either.
I'm trapping identifiable bots in a maze of garbage, where every link carries a poison ID I can identify trivially. The residential proxies virtually disappeared, my firewall takes care of them.
I still see ~5m requests a day across the few dozen sites I host, but that's a far cry from the 110m1 I've seen before. I can handle a constant hum of 50-60 req/sec, that keeps their queues poisoned.
It still sucks I have to do this, but the problem can be mitigated, in my experience.
"only" 110m, because my server fell over under the load. ↩︎