It's much harder, but possible. You could look at browser features in JS and compare them to what's known for browsers to do and guess the browser. Some browsers are highly likely to be certain ODs.
It's highly highly likely that they are just looking at user agent strings.
Well, the code to look at JS features must be written in JS itself (adding features to an array, sending them over JSON, redirecting to a new page, etc.). I'll pull out my Dev Console and fuck with it (set a breakpoint and change that part of the code), and make them think I'm using lynx instead of Safari.
So, I don't think you can ever really know what browser your users use.
Sure. And even if you could, you couldn't really know whether they like cheap hotels based on it. The question is whether you can get a signal that's statistically well correlated enough to be useful.
Actually in this case you could infer they like cheap hotels (or don't like expensive ones). If someone is willing to go to a lot of effort to hide who they are, to hunt for bargains, or check they are getting a good price, they are probably very price sensitive, and would like the cheapest hotel you have, they've shown they are willing to waste their own time to get cheaper prices.
Screen size? Fonts?