In this particular instance, I’m dealing with a flaw on Disney+, which, as a die-hard Marvel fan, I have been a member at for some time now. I love those shows, want them to continue, and do not want to have to restart my entire desktop and lose all of my work just so I can watch them. (Not to mention the sheer span of classic animation available.) As of recently, a flaw in their page is preventing videos from loading for me, due to a dependence on specific user agent strings. It’s inconvenient, but no biggie; I just need to override a few things.
Whenever this happens, it’s important to remember that it wasn’t personal. Sometimes a design flaw, often involving the User Agent string from your browser, will keep a service like (but not limited to) Disney+ from functioning on your OS. This is absurd, as it’s a central point of web browser security to isolate everything from the OS. Otherwise it would be dangerous! However, some new designers just don’t know better, and they’ll test the User Agent string for the browser but keep the part about the OS.
I still insist that that operating system part never should have been there in the first place, but I’ll come back to that after my instructions.
Similar actions are probably possible in other browsers like Chrome, but I’ll be detailing Firefox as an example.
Setting Up a Custom Profile
The problem with changing a user agent string is that it will, generally, cause other sites to malfunction or perform improperly. (We’ll come back to how to set that string in the next section.) To do this, from Firefox, open about:profiles.
Here, you will be presented with existing profiles, which are collections of custom settings. You may already have a few available, but we’re creating a new one. Click on “Create A New Profile”.
Firefox has a wizard for this (whatever our opinion of wizards may be), but it is rather straightforward. You will need a memorable name (I recommend against using spaces or characters like “/”, “\”, “:”, or any other that may have specific meaning in your terminal). The root and local directories don’t need to be changed in most situations. Once you have it, switch to that profile by clicking on “Launch Profile in New Browser”.
It’s helpful to check and see that your typical browser profile is still the default. Click on the “Set as Default Profile” button if you have to.
Note that the two browser profiles effectively function as separate programs.
Setting a Custom User Agent String
Once you have your browser open, I suggest giving it a default color different from your typical browser, so you can tell them apart. The theme color of the site you’re trying to access is usually a good bet, it’s unwise to use this for any other site anyway.
We’ll now be adding a custom property to this profile. It is very important that you perform the next steps using your new profile, not your old one.
From the browser launched with your new profile, open about:config. This is how you’ll set configuration preferences for your profile. As of at least Firefox 106.0.2, you’ll have a search bar at the top of the screen.
This is a little more than a search bar, as it also allows you to set new, custom properties which can be accessed from scripts. Look up this property:
It isn’t typical to have it set, but if you’re using your new browser profile, there shouldn’t be any harm in overwriting it. Press the “+” button next to the string to do so, after verifying your spelling and ensuring you are adding precisely that property.
The user agent was once heavily used to determine the idiosyncrasies of different browsers, and to ensure that a page (along with its style sheets and scripts) loads properly on that browser. Sometimes it still is, though the browsers aren’t locked in the same kind of war they were in the 1990s.
Sometimes, someone will accidentally use this as a security check to ensure that a non-custom-browser is not being used, which is unwise on so many levels; but we’ve all been naive once and it’s no reason to give them flak, it’s just something we need to work around.
Modern user agent strings specify both the browser kernel and the operating system it’s built for, which really should never have entered the question, but I digress. The truth is, we didn’t know what we were doing back then, or where it would go. By overriding this string, you can fake your browser and OS. You can request pages that might typically only be visible to Chrome from Firefox, or see how a page would look on MacOS from Linux… given that your browser is capable of properly rendering the page.
Today, we’ll be using a specific custom string to convince the site at the other end that we’re running on Windows.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246
Once you have added this string to your profile, sites will be convinced that you are running your browser from the Windows operating system (or at least, using something based on Windows NT 10.0). It should work immediately for the profile you wrote it into.
This is of course likely to change with time; and more modern user agent strings can be found on a number of sites, for me most typically www.WhatIsMyBrowser.com. Feel free to experiment with them! Just keep it in that custom profile.
If your user agent string is correct, your browser will receive the exact same data as your chosen operating system. This is, with good reason for both sides, as much as the server ever knows about your specific computer. If it knew more, it could potentially execute arbitrary code that affects your host environment, and the internet as we know it, streaming media and all, would collapse on itself.
Creating a Custom Launcher
Now that we have this custom profile, we’re doing good; we can access our subscription service and everything. However, it would be nice to just double-click an icon on the desktop and immediately get to it, wouldn’t it?
I’ll walk you through this, again using my example of Disney+.
Create a launcher on your desktop, or if this option is unavailable to you, a shell script. Name it appropriately (I suggest the name of the service you’re accessing), and give it the following launch command:
firefox -p <your profile name> www.disneyplus.com
Where <your profile name> is the name of the new profile which you provided.
firefox -p allows you to run Firefox with the profile name specified in the next argument. Here, I assume you want to start the launcher at Disney+, but you can replace that string with the address of the host you’re attempting to reach, or simply remove it and navigate manually. After all, this could (and will) happen to anyone.
If you would like a custom icon to your launcher, I suggest using a site like icons8.com and I personally prefer SVG over PNG; but that’s up to you.
Using that launcher will take you to your streaming service, ready to go!
Advice for Web Developers
It’s admittedly been a long time since I was a web developer, and the web has changed quite a bit since then. That said, user agent strings, back in the day, were used to work with incompatibilities between browsers, with the assumption that the operating system would play a part in that.
There were a few mistakes in that assumption. For starters, desktop environment ≠ operating system. On this machine alone I regularly switch between KDE Plasma (like living in a penthouse) and XFCE (like living economy). They both handle things entirely differently, but the user agent string will betray you, as in either case it will say “Linux”.
It’s just not enough to be helpful.
So, rather than depending on this poorly placed identifier, I suggest sanitizing it with a regular expression, and completely ignoring the operating system. It is the goal of any browser to behave the same on every OS that supports it, and there are a heck of a lot of them out there. Believe me, you would not like your job better if you had to build your pages and services to check for every single Windows Update or personalization setting that changed the desktop environment.
Let’s take a moment to remember that all policies exist for a reason, and it is important to ensure that whatever you are doing is not ultimately in violation of your contract. (Not that I intend to tell you how to live your life.) For legal reasons, it is important to consider that while a browser setting is within your control, this should not be used in any manner that would violate intellectual property rights.
That seems unlikely here, but it bears repeating that animators and film makers are still trying to make a living and deserve our respect.
I would like to make it clear that I do not endorse theft, piracy, unauthorized access of a streaming service, or anything in violation of contract or law; this is purely advice on customizing your browser settings to enjoy an optimal experience on your choice of operating system and desktop environment.
If you must, contact your streaming service to find out what their policy is on making such changes. Or, you know, don’t; but if there’s trouble of some kind, don’t come back to me with it. I’m an animator myself, after all; and it isn’t that expensive. Pay people for their hard work, they did it for you!
Sometimes it isn’t possible to get a service to work via user agent alone; perhaps some other detail is in the way. Maybe it depends on a plugin that has not been made, or does not have an equivalent, for your operating system—super rare these days, sure, but not impossible.
On occasions like this, I recommend one of two things: a compatibility layer, like WINE for Linux, BSD, Macintosh, and others for emulating Windows; or a virtual machine like VMWare or VirtualBox.
Hardware virtualization has progressed by leaps and bounds over the years. A CPU is now capable of furnishing two separate operating systems—effectively different machines—with 64-bit processing when virtualization is on. (For MSI motherboards like mine, that’s IOMMU and SVM enabled in the BIOS/UEFI settings; other motherboards have similar settings you’ll have to look up.)
This allows programs like VirtualBox to create virtual hard drive files, of dynamic size if you would like, and run 64-bit Windows 10/11 on it, or any other operating system you can get an install disk and a license for. This is a major component in server technology at this point, and we are a long way away from the days of simply treating a virtual machine as “one computer pretending to be another”.
I’m not going to delve into the details of these here, but in the instance of running Linux, you can install something like Chrome or Firefox for Windows with WINE and run the service through that; or you can install Windows 10/11 as a whole on a VM, and just watch it through Edge in that.
Hopefully this post has given you a number of inspirations on how to semi-permanently get any service available to you on your chosen work operating system.