For the past few years I have been using Gary Keith's browscap file to extract browser and OS information from the HTTP request. This method works absolutely fantastically, as long as the file is kept up to date. I have a cron job that ensures the file is kept up to date each day.
My questions, very simply, are:
I am asking purely out of curiosity in case there are better methods out there.
Yes as long as the file is kept up to date I would say this is the best method.
As to whether other websites use the same thing, that answer can only be given if you've asked them ;-)