In 2012 I was told Google gets 1 million applications a year. How do you decide which 1000 of those get 6 month contract offer? How many millions of dollars in lost productivity are you willing to lose of the people who don't pass your 6 month test that you had wasting space, taking up training time, having people have to review and reject their code, etc? What will those people do who gave up their lives somewhere else to be part of your company do when you tell them you've decided to not make them employee when their contract is up?
The value is similar to that of internships - the amortized cost of a 6 month 'trial period' should be similar if not cheaper than false positives that are a lot tougher to fire so you avoid dumpster fires like Amazon's mandatory attrition rate. I also wouldn't call it giving up there lives, when they know what they're signing up for and are presumably getting paid a similar amount to the the full time role they're applying for. Now if FAANG companies try to use their reputation to get cheap labor with no intention of hiring I don't have answers to that, but I can't imagine it would be worth the cost.
They still have some selection criteria for internships. It's not like they take the first 100 students at random so you're left with the same issue. You have to narrow the selection. That likely includes interviews.