In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and Mosaic displayed pictures along with text, and there was much rejoicing.
I’ve always wondered why every user agent string starts with Mozilla, and now I know. Fun read, too.
In my heart I knew this was the case but to see it written out just makes the devs all look petty. Then again though what exactly were they to do when the web-devs wouldn’t update their sites to allow for browser changes. Now we have absolute monstosities of user-agent strings that are just ridiculous
Edited 2018-03-06 03:03 UTC
I think it was inevitable that the user agent string would cause more problems than it solved. It’s not reasonable to expect websites to be able to know what types of content every version of every browser supports. It’s far more reasonable to expect each version of a browser to be able to know what types of content it supports. A better approach might be to have websites announce what types of content they have available, and have browsers request what they can handle.
Then the browsers would request everything anyway
So nothing new happened about UA strings in the last 10 years since the article was posted?
I cringed the most at “followers of Linux were much sorrowed, because they had built Konqueror[…] called itself Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD)”
Yes, the article is almost 10 years old. And to be honest, things only got worse …
For instance, this is the user agent string of Safari on iPhone (see below).
So we have an iPhone, who pretends to be like Mac OS X, who pretends to be like Safari, who pretends to be like KHTML, who pretends to be like Gecko, who pretends to be like Mozilla … 🙂
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
TBH though, it’s really only graphical web browsers that are that bad consistently. For example, the Android HttpURLConnection class (used by Android apps who just want to fetch data from web servers) has a default UA string that looks like:
Dalvik/1.4.0 (Linux; U; Android 2.3.6; GT-S5570 Build/GINGERBREAD)
It tells you it’s Dalvik and what version, ID’s the OS, and tells you the model of the device and the build of Android.
Going even beyond that, most other things that aren’t specifically web browsers just ID themself and their version (for example, ‘Wget/1.19.4’), and a lot of text-mode browsers behave like that too.
I lived though these user agent fights… not fun. Sucks. Things are kinda better? Javascript toolkits take care of most of the issues. But I don’t JS client side that much anymore.
This tweet thread sums it up:
https://twitter.com/AmeliasBrain/status/963589448406462464
Thanks, this tweet from @AmeliasBrain is priceless:
I want to live in the world where this is the real reason for web browser’s convoluted user-agent strings.
“Dearest server, I am Chrome, the 64th of that name, child of WebKit, grandchild of KHTML, a disciple of Gecko, follower of the great Mozilla/5.0, running on Windows NT 10â€
Edited 2018-03-07 06:01 UTC