Search code examples
c#internet-explorerwatinuser-agent

Change IE user agent


I'm using WatiN to automate Internet Explorer, and so far it's been great. However, I would really like to be able to change the user agent of IE so the server thinks it's actually Firefox or some other browser.

A Firefox useragent string look something like:

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

With the following code

RegistryKey ieKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent");
            ieKey.SetValue("", "Mozilla/5.0");
            ieKey.SetValue("Compatible", "Windows");
            ieKey.SetValue("Version", "U");
            ieKey.SetValue("Platform", "Windows NT 5.1; en-US");
            ieKey.DeleteSubKeyTree("Post Platform");

I have been able to change the IE useragent string from

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; AskTbMP3R7/5.9.1.14019)

to

Mozilla/4.0 (Windows; U; Windows NT 6.1; Trident/4.0; en-US; rv:1.9.2.13)

Now, the question: how do I delete the Trident/4.0 part and add the "Gecko/20101203 Firefox/3.6.13" part after the parentheses?

I would really like to do this programatically in C#, without using any IE add-ons.

Thanks in advance.


Solution

  • There's no supported way to do this in C# without any IE Addons unless the WebBrowser control is running in-proc, in which case you can use the UrlMkSetSessionOption() API. See The User-Agent String: Use and Abuse

    If you are willing to use add-ons, see http://www.enhanceie.com/ietoys/uapick.asp

    Now, there's an unsupported hack to do this that I wouldn't recommend-- namely, you could replace the COMPATIBLE string with the remainder of the Firefox UA, followed by a CRLF and the text IGNORE:. This would cause the HTTP header to "wrap" into a new header, so you'd be sending Headers that look something like:

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 IGNORE: MSIE 8.0; Windows NT 6.1; Trident/4.0; AskTbMP3R7/5.9.1.14019)