C#WebBrowser控制代理

xha*_*730 19 c# proxy webbrowser-control

如何在C#WebBrowser控件/组件中实现代理.

我想知道的是,如何实现代理,所以我的C#webBrowser控件在运行时使用此代理进行浏览.

我也不想通过注册表更改代理...因为它影响我的正常浏览...

Nic*_*ray 15

private Uri currentUri;

        private void Form1_Load(object sender, EventArgs e)
        {
            currentUri = new Uri(@"http://www.stackoverflow.com");
            HttpWebRequest myRequest = (HttpWebRequest) HttpWebRequest.Create("http://www.stackoverflow.com");
            //WebProxy myProxy = new WebProxy("208.52.92.160:80");
            //myRequest.Proxy = myProxy;

            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

            webBrowser1.DocumentStream = myResponse.GetResponseStream();

            webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
        }

        void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            if (e.Url.AbsolutePath != "blank")
            {
                currentUri = new Uri(currentUri, e.Url.AbsolutePath);
                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(currentUri);

                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

                webBrowser1.DocumentStream = myResponse.GetResponseStream();
                e.Cancel = true;
            }
        }
Run Code Online (Sandbox Code Playgroud)

你必须玩一点,但我能够浏览网站.

或者您可以尝试修改WebRequest.DefaultWebProxy设置:http: //msdn.microsoft.com/en-us/library/system.net.webrequest.defaultwebproxy.aspx

  • 好技术(我upvoted) - 但这不包括回发和cookie (4认同)
  • 我不认为你可以设置WebRequest.DefaultWebProxy,但你可以自己拦截它并创建自己的导航. (2认同)
  • 问题是,文档是使用代理流加载的,但是,它的其余内容,如 js 文件和图像,甚至框架 url 是使用非代理连接加载的。我也在寻找解决方法,但似乎控件本身没有单独的设置或代理,而是使用真正的 ie 供应...... (2认同)