6

プロキシと共に webBrowser コントロールを既に使用している人の助けが必要です。

私が必要とするのは次のとおりです。

1 - webBrowser コントロールのプロキシを設定します。2 - 特定のサイトを読み込みます。3 - サイト全体でルーチンを実行します。4 - webBrowser コントロールの別のプロキシを設定します。5 - 別のサイトを読み込みます。6 - ポイント番号 3 から同じルーチンを実行します。

このプロセスは、すべてのプロキシが使用されるまで、プロキシのリストからループします。

しかし。アプリに問題があります。それを行うには:

1 - プロキシを webBrowser コントロールに設定するために添付されたコードを使用していますが、実行中に 1 回しか機能しないようです。ループでもう一度呼び出すと機能しません。理由がわかりません。

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();
4

4 に答える 4

7

おそらく、このリンクが役に立ちます:

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

コードをテストしたところ、うまくいくように見えました。ただし、次の 2 点が重要です。

  • コンパイル モード「任意の CPU」のプロジェクトとは互換性がありません (x86 は正常に動作します)。
  • JUST HTTP プロキシ サーバー用。靴下用ではありません
于 2014-10-16T14:22:28.993 に答える
3

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();
}
于 2012-08-20T18:03:15.800 に答える
0

以前、少し似たような質問がありました。質問に対する受け入れられた回答は、この Microsoft Knowledge Base の記事を参照することを提案しています。

" Internet Explorer でプログラムを使用してクエリを実行し、プロキシ設定を設定する方法"

基本的に、いくつかの P/Invoke を実行し、いくつかの WinInet DLL 関数を呼び出す必要があります。実際のプロジェクトで試したことはありませんが、これが進むべき道だと強く思います。

于 2012-08-20T18:58:33.923 に答える
-4

皆さんにお知らせしておきますが、この男は 5 つの質問を投稿しましたが、すべて同じことを尋ねています。最初の質問と、彼がどれだけひどく倒されたかに基づいて、彼はある種のサイバー犯罪を犯そうとしているようです。今、彼の知性を読んだところによると、彼はおそらくすぐに刑務所に入れられるでしょうが、サービスに架空の IP アドレスを提供することは不可能であることを彼に知らせることで、彼をその状態から救うことができるのではないかと考えています。あなたが通信している(通信している場合、サービスはあなたに連絡して応答を提供することができないため). 彼の面白いリストは次のとおりです。

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

webBrowser コントロール C#/.net 3.5 でプロキシを使用する

IP アドレスを webBrowser コントロールに渡す方法

カスタム IP アドレスを使用して Web ページ c#/.net を閲覧する方法

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

そして今、彼は新しいユーザー名user1563019を作成したと思います。以下にプロキシ/設定に関する質問が追加されています 。

于 2012-08-31T12:24:40.170 に答える