C# 更改 WebBrowser UserAgent
经在Server2008R2,Windows7,Windows10测试,只要修改相应的 User Agent 即可实现,参考代码(以IE8模式工作)如下:
var ieversion = (new WebBrowser()).Version.Major; string ua = "Mozilla/4.0 (MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"; if (ieversion <= 8) ua = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)";
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved); [DllImport("urlmon.dll", CharSet = CharSet.Ansi)] private static extern int UrlMkGetSessionOption(int dwOption, StringBuilder pBuffer, int dwBufferLength, out int pdwBufferLength, int dwReserved); const int URLMON_OPTION_USERAGENT = 0x10000001; const int URLMON_OPTION_USERAGENT_REFRESH = 0x10000002; private void setUserAgent(string userAgent) { UrlMkSetSessionOption(URLMON_OPTION_USERAGENT_REFRESH, null, 0, 0); UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, userAgent, userAgent.Length, 0); } private string getUserAgent() { var buffer = new StringBuilder(255); var returnLength = 0; var ret = UrlMkGetSessionOption(URLMON_OPTION_USERAGENT, buffer, buffer.Capacity, out returnLength, 0); return buffer.ToString(); }
桂棹兮兰桨,击空明兮溯流光。