Page 1 of 1

How and why to remove "Iron" from the user agent string

Posted: Wed Oct 16, 2013 2:36 am
by DesElms
Iron is, of course, based on the Chromium browser, and so is Google Chrome, and SR Ware does a fine job of making Iron as nearly-identical to Chrome as possible: we love Iron because it's basically Chrome, but without the privacy violating aspects.

Another reason to love Iron: It has a portable version, yet there's not really a credible and routinely-kept-up-to-date portable version of Chrome out there; so Iron ends-up being the best choice for anyone wanting a portable version of Chrome. Add to that that it's kept up-to-date (where most portable Chrome versions are allowed to become woefully out-of-date), plus the aforementioned removal of Chrome's privacy-violating aspects, and what's not to love, right? Seriously, I, at least, absolutely love Iron portable! I seriously don't know what I'd do without it, at this point.

But some out in the world, to my astonishment, do not feel such love for Iron... portable or installed. Oh, sure, I could understand any of Iron's competitors not liking it; I've seen, for example, a few idiots take potshots at Iron over in the Comodo Dragon browser forums, now and then. Iron does, after all, do what Comodo Dragon at least tries to do, but Iron does it way better; and Comodo Dragon is never as up-to-date as Iron... sometimes it's months and months behind. So I can understand why Comodo lovers might hate Iron.

What I don't understand, though, is Chrome browser extension developers intentionally blocking the use of their Chrome extensions in Iron. I haven't yet stumbled onto an extension in the Chrome web store that won't let itself be installed into Iron (though I'm told there are some out there); however, I have, now, found a Chrome extension developer who who offers one version of his extension in the Chrome web store which can be installed into Iron, yet he inhibits the installation in Iron of the special version of his extension (which contains a few extra features that Google wouldn't allow in the version that's in the Chrome web store).

The extension -- and it's a really good one, by the way -- is called "Youtube Options," and I, personally, would never use Youtube without it. It's fantastic! It completely changes (for the better) the entire Youtube experience. There are other Youtube-related extensions in the Chrome web store, but, trust me, this thins is best-of-breed! Be sure to read its features on its Chrome web store page...

...and now imagine a version just like it, but with the added ability to directly (with just a single click) download the video being watched in several formats from links that appear beneath it! Is that cool, or what?

That's the special version that's only on Youtube Options's developer's website. And, of course, because that special version is not in the Chrome web store, it must be sort of forcibly installed into Iron (or Chrome, or pretty much any Chromium-based browser) by first downloading the extension's .CRX file, and then opening the "Extensions" page in the browser, and then literally dragging said downloaded .CRX file from Windows Explorer to the opened "Extensions" page, and then releasing it thereon. That, in fact, is how pretty much any extension that's not on the Chrome web store must be... shall we say... " forcibly" installed into pretty much any Chromium-based browser. And most (or at least many) Chromium-based browser users have learned that. So that's no big deal.

But Youtube Options's developer has recently thrown-up a roadblock to that simple method. He has recently installed a browser sniffer script onto the web page on his site from which one may normally download his extension's special version's .CRX file; and said script watches for the presence of Iron's user agent string in any browser that views the page; and if it sees "Iron" in said string, it blocks the ability to download the extension... explaining that the Iron browser is specifically not supported. Go ahead: using your copy of the Iron browser, hit the web page of the "full" version of Youtube Options on its developer's website...

https://spoi.com/software/yto/

...and notice that it won't let you download it; that it tells you that you have to be using Chrome, Safari or Opera... that that's all the developer supports; that Iron is specifically not supported.


What's a user agent string?

All browsers send a "user agent" string to any website they hit; and contained in said string is information about what kind of browser it is, what version it is, and even what other browser types and versions it mimicks. It also contains information about what kind of computer and operating system is in play. For example, back when version 22 of Iron was current, any 64-bit Windows 7 machine running it sent the following user agent string to any website that the Iron browser hit:

Code: Select all

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1250.0 Iron/22.0.2150.0 Safari/537.4
Yes, the string says the browser is Chrome (so that it will be compatible with websites that allow or even require Chrome to "see" them); but note, too, that the string "Iron/22.0.2150.0" is also present (to accurately identify the browser as being Iron).

Most websites "see" the Chrome part of the string, and that's pretty much all the site needs to know in order to properly render its pages in the Iron browser; and said sites treat the Iron browser exactly the same way as they treat the Chrome browser... hence, for example, the reason that we Iron users can freely install extensions from the Chrome web store.

However, for some reason this guy who makes the Youtube Options extension doesn't do that; and he's specifically singling-out the Iron browser to keep its users from downloading his "full" version extension's .CRX file by using a script that spots the "Iron" part of the user agent string, and then changes the page to reflect that Iron is not supported.

Of course, there are workarounds. After all, the guy's not putting code into the extension, itself, which specifically blocks its use in Iron; he's only stopping people from downloading its .CRX file from his website's page while using the Iron browser. For example, if the script isn't server-side, then I'm assuming that if one simply temporarily turned-off scripting in one's Iron browser, while one visited the page, then one could maybe still download the .CRX file. Or, one may hit the Youtube Options's "full" version page page using one's copy of actual Google Chrome... that would definitely work. However, some people, once they start using Iron, don't even want a copy of Google Chrome on their machines, and so don't have one handy for such purposes.

And so that leaves us with changing Iron's user agent string so that the "Iron" part of it is gone. So doing will make websites think that Iron is really and truly Google Chrome. Most sites already do because they don't look for or care about the "Iron" part of the user agent string; but by removing it, altogether, all opportunity for a site to penalize an Iron browser user for not using real Google Chrome (as the Youtube Options side does) is removed.


Changing the user agent string

One may very easily and quickly change the user agent string just for however long s/he's on the Youtube Options "full" version web page by performing the following steps:

FIRST, go to this website and see what is your copy of the Iron browser's user agent string. It's the part that's in a COURIER NEW font, in the box, just under the headline "User Agent String explained:", and it should look something like this:

Code: Select all

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Iron/29.0.1600.1 Chrome/29.0.1600.1 Safari/537.36
Of course, if your copy of Iron is either older or newer, then it's version number will be different, but it will look at least something like that. Highlight that user agent string and copy it to the clipboard.

SECOND, open a new tab in your Iron browser, and point it at the Youtube Options "full" version webpage.

THIRD, while on that page, open Iron's "Dev Tools" by pressing the [Ctrl-Shift-i] keyboard keystroke combination.

FOURTH, note, down in the lower-rightmost corner of the browser the Dev Tools "Setting" icon; it looks like a gear with teeth. Left-single-click on it to open the Dev Tools settings.

FIFTH, select the "Overrides" item on the left.

SIXTH, put a check next to "User Agent;" then choose "Other;" then paste into the field beneath the user agent string that's on your clipboard (copied there back in the "FIRST" step.

SEVENTH, left-single-click in that field to put the typing cursor there; then move left or right with the left/right arrow key on the keyboard to find the "Iron/29.0.1600.1" string, and remove only it, plus the space behind it, and nothing more. Then click on the "General" item over on the left to both get your typing cursor out of that field, and also signal to the browser to accept the information in it.

The Youtube Options page should immediately repaint in the area above the Dev Tools, and the ability to download the .CRX file should be present. Just do it, right then and there, leaving Dev Tools open near the bottom, because the change to the user agent string you just made is temporary, and will only last for as long as Dev Tools is open.

If you'd like the change to be permanent, though, then you'll either need to encode the command line, or, better yet, you'll need and extension like like "User Agent Switcher for Chrome"; or, I, personally, prefer "Ultimate User Agent Switcher and URL Sniffer," but, hey... that's just me.

In either of them, just create a choice of user agent strings to use whenever they're activated which contains the user agent string of your copy of Iron, but with the "Iron" part of the string removed; so that it looks something like this...

Code: Select all

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1600.1 Safari/537.36
...from which, just this...

Code: Select all

Iron/29.0.1600.1 
...was removed. In my copy of the Ultimate User Agent Switcher and URL Sniffer extension, I call that choice "-Iron" to mean "Chrome minus Iron;" and I just have that going pretty much permanently (unless, of course, I need the browser to temporarily act like some other browser, for testing or something), so that every website thinks I'm using Chrome, with Iron having nothing to do with it. When the next Iron update is released, I'll obviously need to update it.


Wh'd the guy do it, in the first place?

When I asked Youtube Option's developer why he did this, he was defensive and snippy and immature... so I'm guessing he's very young. Writing in the royal "we," as if to suggest that he's an entire company with actual employees, he said that "they" got tired of supporting a browser (Iron portable) which was so old; and he linked me to the version of Iron portable that's on the Portable Apps website...

http://portableapps.com/apps/internet/iron_portable

...a website which has, in the past, been a little bit bad about making sure the version of Iron it offers is the latest (though at this writing, what's there is the latest), and I pointed that out to him, and then linked him to SR Ware's download page and assured him that whatever's there is the most current. In his reply he started citing other excuses (because I had just shot-down the one he first cited, which caused him to become even more defensive and snippy). There was clearly no convincing him. None of his responses were reasonable -- and certainly not mature and experienced -- and so I just gave-up trying to convince him. I don't know if he really had good reasons, or if he was just loathe to lose the argument. Who knows.

In his defense, he did mention that many of the browsers built on Chromium, out there (other than Chrome, itself, of course), are just so bad, and there are so many versions of them, each with their own peculiarities, that "their" decision was to not support any browser (other than Chrome) that's built on Chromium. I must confess, I can understand that; but I was disappointed that I could not convince him that Iron was different... better than most others... better, even, than Comodo Dragon, which is built and maintained by a much larger company than SR Ware. I also wanted to ask him why, if "they" were simply not supporting Chromium browsers, and not specifically Iron, then why did his web page's user agent sniffer script not return an error message something like "this extension isn't supported on Chromium-based browsers other than Google Chrome," rather than singling-out Iron, specifically. But I stifled such questioning. The guy clearly didn't like being backed-into corners; and he was just making it too easy.

[sigh] Anyway, there was simply no convincing him... and we Iron users should probably not bother him about it. After all, if he got ticked-off at us, he could encode the extention, itself, not to even run in Iron; and then that would make more work for people like me who would then have to hack it and make it available to Iron users. Please don't make that extra work for me. Let's all just leave the guy alone. He, too, is pedaling as fast as he can, in life. And despite his immaturity, he seemed niced enough. You have to hand it to him, in any case, for writing a really outstanding extension. It really is best-of-breed!

A funny aside: When, after something I wrote to him, he wondered if I had been looking at his extension's code, he hit me hard with a copyright threat. Ha! If he only knew with whom he was communicating. I've forgotten more about intellectual property law then he'll ever even know! Plus -- and this is the funny part -- the whole purpose of his extension is to usurp Google's Terms of Service and practices, including several intellectual-property-rights-related things. It's sort of like when a theif warns others not to steal anything from him. The irony's so thick you could cut it with a knife.

It was also funny when he wrote to me (even after I had fully explained what are the salient benefits of using Iron) that if I love a WebKit browser that much, but don't want to use Chrome, then I should just use Opera. Oy. Where to even go with a ridiculous remark like that! [grin]

Anyway... none of it really matters, because even he pointed-out that if a person really wanted the "full" version of his Youtube Options .CRX file, all s/he'd have to do is change the user agent string, as I've just instructed, above, how to do. So I think what he's mostly trying to do is just discourage users of Iron (or at least Chromium-based browsers other than Chrome) who aren't very technically savvy...

...since, stop and think about it, all he really did to block the use of the "full" version of his extension in Iron was erect the kind of minor barrier on its download page which only someone who'se slightly technically savvy could usurp. So, what the heck... let him do it. Those of us who really want the extension know how to get it.

However, I'm told there are other sites and extensions and plug-ins and tools like that out there... things which, for whatever reason, don't like Iron, and intentionally block it, or won't run on it, even though there's not a single good reason in the world for it. Iron is close enough to Chrome that tools and extensions and plug-ins running on it, and the websites that it hits, are just as easy to support as if they were running on, or being hit by, Google Chrome, itself. And we all know that.

Sadly, there will always be people out there who don't agree -- who don't get it -- and to get around them, we sometimes need to know when and how to change the user agent string. Hopefully, this posting has helped with that.

Don't hesitate to ask questions if you happen to have any; but if you do, don't quote this entire long post of mine. Just quote the part that's relevant to whatever is the point of your posting.

Re: How and why to remove "Iron" from the user agent string

Posted: Mon Nov 25, 2013 4:40 am
by keyboardmash1231
On a related note, you can download .crx extensions from this link:
https://clients2.google.com/service/upd ... HERE>%26uc

Just replace that one part with the string of nonsensical letters you see in the store URL. To change version requirements, rename the .crx file to .zip and extract the files to a folder. Open "manifest.json" in a text editor and change the part called "minimum_chrome_version". Now go to Iron's extension tab and check the box named "developer's mode", click "Load unpacked extensions" and select the folder you edited the extension in.