【问题标题】:Use a proxy with webBrowser control C#/.net 3.5使用带有 webBrowser 控件的代理 C#/.net 3.5
【发布时间】:2012-08-16 01:47:02
【问题描述】:

我需要一些已经使用 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();

【问题讨论】:

  • ExecuteRoutine();不存在!当前上下文中不存在名称“ExecuteRoutine”

标签: c# .net proxy webbrowser-control ip-address


【解决方案1】:

也许这个链接有用:

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

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

  • 它与编译模式“Any CPU”的项目不兼容(x86 工作正常)
  • 仅适用于 HTTP 代理服务器;不适合袜子

【讨论】:

    【解决方案2】:

    只是为了让大家知道,这个家伙已经发布了 5 个问题,都在问同样的问题,并且根据他的第一个问题以及他被击倒的严重程度,他似乎正试图犯下某种类型的网络犯罪。现在,根据我对他的才智的解读,他可能很快就会入狱,但我只是在想,也许我们可以让他知道不可能为服务提供虚构的 IP 地址,从而使他摆脱困境您正在与之通信(因为如果您这样做了,服务将无法联系到您以提供响应)。这是他的娱乐清单:

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

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

    how to pass ip-address to webBrowser control

    how to use custom ip address to browse a web page 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

    【讨论】:

    • -1 .. 和?这个问题及其潜在的解决方案仍然与程序员有关。大约 5000 次浏览量证明了这一点。
    • -1 做出这样的假设是非常错误的;这个问题也与我有关,我绝对不是罪犯……
    【解决方案3】:

    过去我有一个 similar question。该问题的accepted answer 建议查看此 Microsoft 知识库文章:

    “How to programmatically query and set proxy settings under Internet Explorer”

    基本上,您必须执行一些 P/Invoke 并调用一些 WinInet DLL 函数。尽管我从未在实际项目中尝试过,但我强烈认为这是可行的方法。

    【讨论】:

      【解决方案4】:

      1- 我猜 webBrowser 控件只在创建代理时检查代理,所以在设置代理后创建一个新控件

      2- Navigate 不是阻塞调用,不会等到页面加载完毕,请使用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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-20
        • 2011-07-26
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        相关资源
        最近更新 更多