use*_*298 6 .net c# proxy ip-address webbrowser-control
我需要一些已经使用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);
}
Run Code Online (Sandbox Code Playgroud)
//应用程序逻辑--------------------------------------
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();
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21247 次 |
| 最近记录: |