The IE 11 user-agent forced Mozilla to freeze part of its user-agent string
miketaylr.com
miketaylr.com
To push browsers to get rid of UA string, we should all use a UA string extension that uses the same string like "DOG-SHIT". That way it'll start showing up in analytics.
And if you're trying to date the "data science" girl, spam the app/website with UA string like "hi-amy-will-you-go-out-with-me--sincerely-jack-who-sits-behind-you."
Maybe throw in the EICAR test string as well, getting their shitty antivirus to purge the log files may just help protect your privacy!
I recently ran into an issue where a media-heavy blog post of mine would sporadically crash iOS Safari. I ended up narrowing it down to my use of ImageBitmap to accelerate rendering images into 2D canvases on the page.
My fix ended up being to modify my ImageBitmap feature check to pretend it wasn't supported on Safari.
Lots of `isIOS` and `isSafari` tests in my code. Safari 15 for example cannot correctly apply orientation metadata, and will choke on very big images when using `createImageBitmap` in a thread. No way to find out.
I could probably detect the orientation issue with a small dataURI of an image, but the big image issue is more difficult.
[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hin...
FTFY. Last I checked it's just a unilateral Chrome implementation, no one else recommends it.
I just don’t know how much of this applies to trademark because, well, I never got curious about it until now. But I would assume it’s been reviewed by people far more qualified than myself, given the very litigious context around IE in the intervening period. My bet is it’s moot for trademark because it would’ve been unenforceable at the time of registration, or that it’s such low stakes that no one cared, or that it’s such high stakes that technical leadership fought to retain the status quo.
Courts ruled Nintendo couldn't use trademark in that way, that it was laundering in more rights than trademark provides.
It's weird in this case because it's not Mozilla itself that was requiring Mozilla in the user-agent string for a site to allow or support the browser, but third-parties, who Mozilla didn't encourage or particularly want to do that, as far as I know.
But it's still probably true that it would not be enforceable under trademark for this and other reasons, okay.
I wonder if Firefox has ever considered taking "Mozilla" _out_ of their user-agent! At this point it's probably impossible. We're just stuck with this mess.
Nintendo also manufactured the games which made this easier.
(Without this, it would have been nearly impossible to introduce a new browser. Mind that browsers were much more dissimilar in the early years. E.g., Netscape Navigator could access virtual hosts, while NCSA Mosaic, which didn't know about the host header field, could not. While some browsers came with JS, others, like Viola Web, followed a different scheme, more similar to HyperCard, etc. Therefore, a server may have well checked the user agent string in order to decide how to serve what content.)
I don't think you can ban the use of a word with trademark if it does not cause confusion.
From March 17th, 2023 (or whatever) all user agent strings are now “WebBrowser/1.0” until the end of time.
Just force the switch to better methods.
I see these kinds of suggestions from technologists surprisingly frequently, and I always wonder if it's a serious suggestion and if the person has ever worked on anything with non-programmers as users.
The link explains the problem really well.
User agent sniffing was the only option.
We have a lot of end users on older iPads that can't upgrade to a newer browser.
These users are the general public, so you can't force them to upgrade devices.
We will have to continue to do the user agent sniffing for years to come.
> While the double cookie approach is what is recommended by Google, the ASP.NET team concluded otherwise - they found that going with a user-agent sniffing approach would be the safer approach. User-agent sniffing is hard to get right. It's hard to cover all the relevant browsers, and it's hard to do so in a way where you can be reasonably sure it won't break in user-agents of the future. But when someone gets it right, that becomes a readily copiable solution that anyone can use.
Why can this not be solved with http version numbers instead of a method that allows Google to maintain a seperate standard that it forces developers to switch between with user agent strings?
Or, why any other browser is the new IE. /s
> Just force the switch to better methods.
I always thought software developers should have the needs of users in mind, but it turns out it's the other way around.
* Why do you think we can make our users upgrade? We're small, just one of dozens of websites they use per day. And in our line of business, this usually means losing clients (who, BTW, are usually not the end-users).
* How would we even be able to tell them they should upgrade if we can't test the version of their browser?
* It was Chrome 93 to 95. The bug existed for three months in all versions of Chrome. They couldn't update.
So what's the point of sniffing UA? What was your fix?
Parsing out the UA header mess is a disaster.
Another example, Android webview 69 on certain devices has a bug that will take down the whole app. There is no way you can workaround it without ua sniffing. Because a single try will take the whole app away.
If you feature test for browser crashes, people are going to think it's your site, not their browser.
`if (someFeature && someFeature.someSpecificMethod)...`
Or you can try/catch if you are less sympathetic to inferior tech.
And the industry gave up. This is essentially the same story.
This joke flew right over me. Can someone elaborate?
Compare: https://www.macrumors.com/guide/butterfly-keyboard-issues/
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.2 Safari/605.1.15
Which is all sorts of frozen (old os version, intel on an arm device, etc)A browser becomes less and less an agent of the user with each passing day.
Other engines do the same as well: https://www.otsukare.info/2021/02/15/capping-macos-user-agen...
I suspect that the only part of that which is true is that the bug only occurs on macOS. The date or a sticky s keys isn't a prerequisite.
What would be more interesting is: Why isn't this an issue on Windows?
if (paseInt(revMajor) === 72) { … } // rev 0110 detected!
;-)If sites start rejecting Firefox clients because of that, then instead change it to send exactly the same User-Agent (and other software identification) that Chrome sends, and commit to exactly faking Chrome's signals in the future.
The UA header never had any business existing to begin with. Servers guessing client capabilities from the software they're running, or trying to work around client bugs, is architecturally insane, concentrates power excessively, and guarantees that morons will write bugs like the one this story is about. And the other uses of the information are simply evil.
If you need to signal specific capabilities, which you generally should not be doing because you shouldn't have punted all real attempts at standardization years ago, then signal specific capabilities. Or let the server try stuff and give only success or failure feedback.
However I can't agree with this:
> The UA header never had any business existing to begin with.
The early mobile web, and devices that were just too low-powered and/or low-bandwidth to support even early CSS/JS-based capabilities detection absolutely depended on server-side rendering to serve them mobile-HTML friendly sites.
Yeah, it was terrible, it was painful and insane to manage - but was necessary.
1. Or "website building companies" such as Squarespace.
2. The localhost-bound forward proxy adds a UA header for those few sites automatically.
Responsive is specifically designed to work without client hints/detection, so you'd be good there anyways. Specific mobile-only versions of websites is what breaks, and a large part of that is (some?) Wordpress sites.
Then what. Site providers will still will want to know and this likely results in a browser detection excalation arms race pushed to JavaScript.
I still think servers shouldn't get to know so much about browser clients, certainly not PII-level details (PII-level being the norm as it exists today).
Does the user’s browser support WebDoodle2? Why try to parse a weird history of nonsense and combine that with a table of what versions of what browser supports what?
Just check if document.doodle2 is defined. Done. Reliable. Easy.
FF pretends to be Chrome pretends to be Safari pretends to be IE pretends to be Netscape pretends to be Mosaic pretends to be god only knows.
Actually asking via JS instead of guessing is a massive improvement.
But you CAN make it enough of a pain to cut down on the number of half-qualified Web monkeys who try to use the information in ham-handed ways. You can stop just handing the information over for free to people who might want to casually exploit you. You might even make it harder for some more sophisticated and/or committed actors to do it; for example, if I'm an ISP running a middlebox and trying to fingerprint all the traffic that runs through me, I can't use JavaScript. And you can save some bandwidth in the process.
NoScript.
If we assume that the user-agent string is set to whatever is "most common", and Javascript is disabled, are there no other identifiable bits of information? What about CSS fingerprinting?
Perhaps the expected adversaries are not sufficiently motivated to try to sort somebody into a cohort based on lack of Javascript, and the remaining observable data?
(But not saying NoScript has no uses.)
NoScript is great, I use it, but isn't a solution to fingerprinting via JS if you actually want to talk to the servers that fingerprint that way.
Countries should start enforcing their laws with regard to equal access for disabled users. Invoke hefty fines for denying service to people using assistive software that doesn't masquerade as a mainstream browser and the problem will disappear.
We live in the 21st century and have proper APIs to detect features now, we should not be relying on parsing this user-agent string which is 90% legacy-garbage anyways.
I mean, sites blocking compatible browsers is such a common problem that not only do user-agent switcher extensions exist, they're also some of the most popular extensions out there!
We're already at a point where scraping can be hard without a full-fledged JS engine, a move towards feature detection will mean that you're going to have to use a browser that servers can easily fingerprint for ad targeting if you want to scrape data.
Chrome already deprecated UA strings 3 years ago. Google uses browser fingerprinting to detect if you're using Chrome so they can send you to working versions of their products, instead of the versions they send to other browsers that don't work as well.
I can see browsers being excluded if they aren't of the 'blessed' variety that either follows Chrome's implementation, or if they don't have features that advertisers want that allow for easy user identification/tracking/fingerprinting/etc.
Chrome and Google taken co trol of the standard in ways that generally aren't good for anyone.
If a website can't tell my browser apart from chrome, it can't attempt to support chrome-specitic features based on the user agent string.
>change useragent to egde/chrome
>it works now
Thank you Microsoft.
Many aeons ago I worked on webkit, and the first step for a great many site compatibility bugs is "does it work with a Firefox ua string".
Because it is always easiest to just check ie/new-ie and then useragent gate everything else, that is what happens. Which is why we keep getting sites requiring chrome (new ie) or ie (old ie) - it doesn't matter if the site is broken due to reliance on chrome behavior vs spec, what matters is devs coding to a single browser and considering any deviation to be a bug in anything else.