Winform Webbrowser being recognized as a mobile device

后端 未结 1 1227
星月不相逢
星月不相逢 2020-12-11 09:56

I\'m trying to open websites through the web browser control inside winforms. Although whatever websites it does open, it opens through the mobile version. My web browser is

相关标签:
1条回答
  • 2020-12-11 10:55

    You can navigate to the page using Navigate method and pass a suitable User-Agent string as additionalHeaders parameter.

    The trick is useful for sites which detect mobile mode at server-side based on user-agent string. For some sites which doesn't detect mobile mode and only have client-side responsive design which is based on browser size, you can resize the browser control to a suitable size to show mobile view.

    Example

    Here is an example of user agent string of Edge on Windows Phone 10.
    You may want to use different user agent.

    var additionalHeaders = "User-Agent:Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; " +
        "Microsoft; Lumia 950 XL Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) " +
        "Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063\r\n";
    
    this.webBrowser1.Navigate("http://www.stackoverflow.com", null, null, additionalHeaders);
    

    As result you see stackoverflow site in mobile mode:

    Note - As a better option, Set the user agent for all subsequent requests

    As an option, to set the user agent for all the subsequent requests you can use the following code:

    [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
    private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer,
        int dwBufferLength, int dwReserved);
    const int URLMON_OPTION_USERAGENT = 0x10000001;
    
    string additionalHeaders = "User-Agent:Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; " +
        "Microsoft; Lumia 950 XL Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) " +
        "Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15063\r\n";
    private void Form1_Load(object sender, EventArgs e)
    {
        UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, 
            additionalHeaders, additionalHeaders.Length, 0);
        webBrowser1.Navigate("http://google.com");
    }
    
    0 讨论(0)
提交回复
热议问题