簡體   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