It's fairly trivial facial recognition - it's the scale and the source of the training data that's causing people to kick off.
Here's how I'd do it. You take 3 billion pairs of images scraped from online profiles and URLs to those profiles. You train a convolutional neural network – or a series of networks – to map images to their source profiles. To make life easier, assign each profile an ID number. Thus a particular face will map to ID 1000, another to ID 1001, and so on.
So when you show it a face, it predicts what the correct profile ID should be. Thus if you show it an image it hasn't seen before, it will try to map it to the closest matching face and its profile ID. You then turn that ID number into a profile. You now have a suggested identity for that input face.
The neural network can output profile ID numbers with a confidence value, so a face could return ID 1001 90% confidence, ID 3000 70% confidence, ID 2000 10% confidence, etc. Just take the highest two or three.
Depending on the training and input data preparation, the training process and the network architecture, it'll be accurate or not very accurate.
As for the scraping: buy a lot of cloud instances and parallelize your curl fetches, crawling webpages, building a graph network.
PS: Cache a copy of the page per URL so that if profiles disappear online, you still have a copy. These pages will contain stuff like names, personal info, links to other profiles owned by the person, etc