繁体   English   中英

使用带有webBrowser控件C#/。net 3.5的代理

[英]Use a proxy with webBrowser control C#/.net 3.5

我需要一些已经使用webBrowser控件和代理的人的帮助。

我需要的是以下内容。

1 - 为webBrowser控件设置代理。 2 - 加载特定站点。 3 - 在站点上执行例程。 4 - 为webBrowser控件设置不同的代理。 5 - 加载另一个站点。 6 - 从第3点开始执行相同的程序。

并且该过程以这种方式保持,从代理列表循环,直到所有代理都被使用。

但。 我在应用程序方面遇到了一些问题。 要做到这一点:

1 - 我使用附加的代码将代理设置到webBrowser控件中,但在执行期间似乎只工作一次,当我在循环中再次调用它时它只是不起作用,我可以理解为什么。

2 - 我有问题确定页面何时完全加载,我的意思是,当我设置第一个站点加载时,我需要程序等到它完成加载,然后执行例程,并继续这个过程。

希望有人可以帮助我...

///我正在使用的功能-----------------------------

    private void SetProxy(string Proxy)
    {

        MessageBox.Show("Setting :" + Proxy);
        string key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";

        RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true);
        RegKey.SetValue("ProxyServer", Proxy);
        RegKey.SetValue("ProxyEnable", 1);

    }

//应用程序逻辑--------------------------------------

        SetProxy("190.97.219.38:80");
        webBrowser1.Navigate("http://www.whatismyip.com/");
        ExecuteRoutine();

        SetProxy("187.93.77.235:80");
        webBrowser1.Navigate("http://www.whatismyip.com/");
        ExecuteRoutine();

        SetProxy("109.235.49.243:80");
        webBrowser1.Navigate("http://www.whatismyip.com/");
        ExecuteRoutine();

也许这个链接很有用:

http://blogs.msdn.com/b/jpsanders/archive/2011/04/26/how-to-set-the-proxy-for-the-webbrowser-control-in-net.aspx

我测试了代码,它似乎工作。 但有两点很重要:

  • 它与编译模式下的项目不兼容“任何CPU”(x86工作正常)
  • JUST用于HTTP代理服务器; 不适合SOCKS

1-我猜webBrowser控件仅在创建代理时检查代理,因此在设置代理后创建一个新控件

2-导航不是阻塞调用,并且不会等到它加载的页面,使用webBrowser.DocumentCompleted事件

下面的代码应该工作(未测试)

void Exec(string proxy,string url)
{
    var th = new Thread(() =>
    {
        SetProxy(proxy);
        using (WebBrowser wb = new WebBrowser())
        {
            wb.DocumentCompleted += (sndr, e) =>
            {
                ExecuteRoutine();
                Application.ExitThread();
            };
            wb.Navigate(url);
            Application.Run();
        }
    });
    th.SetApartmentState(ApartmentState.STA);
    th.Start();
    th.Join();
}

我过去有一个类似的问题 该问题的已接受答案建议您查看此Microsoft知识库文章:

如何以编程方式在Internet Explorer下查询和设置代理设置

基本上,你必须做一些P / Invoke并调用一些WinInet DLL函数。 虽然我从未在现实世界的项目中尝试过,但我强烈认为这是可行的方法。

只是为了让大家都知道,这家伙已经发布了5个问题,所有人都提出同样的问题,并且基于他的第一个问题以及他被击倒的严重程度,似乎他正试图犯下某种类型的网络犯罪。 现在,基于我对他的智力的阅读,他可能很快就会进入监狱,但我只是想我们可以通过让他知道不可能为服务提供虚构的IP地址来拯救他。您正在与之沟通(因为如果您这样做,该服务将无法与您联系以提供回复)。 这是他的娱乐清单:

https://stackoverflow.com/questions/12045317/how-to-hide-my-ip-address-c-net-3-5

使用带有webBrowser控件C#/。net 3.5的代理

如何将ip-address传递给webBrowser控件

如何使用自定义IP地址浏览网页c#/。net

https://stackoverflow.com/questions/12019890/how-to-load-webpage-using-user-provided-ipaddress-webbrowser-control-c-net

现在,我认为他创建了一个新的用户名user1563019,下面有更多的代理/设置问题: https ://stackoverflow.com/users/1563019/user1563019

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM