4

Web ブラウザーの C# コントロール アプリケーションで、Web サイトが Cookie を読み取ったり、新しい Cookie を書き込んだりできないようにしたいと考えています。Webbrowser c# アプリケーションの実行時に、すべての Web サイトですべての読み取り/書き込み Cookie 操作を無効にすることをお勧めします。そうでない場合は、読み取り/書き込み Cookie 操作を無効にする必要がある Web サイトのリストがあります。

.NET 2.0 フレームワークを使用していますが、4.5 も使用できます

4

2 に答える 2

4

WebブラウザコントロールでのみCookieを無効にすることはできません。コントロールは基本的に組み込みのInternetExplorerであり、ユーザーのInternetExplorer設定を共有します。Internet Explorerの他のすべてのインスタンスでCookieをブロックしてもかまわない場合(残りのブラウジングにChromeまたはFirefoxを使用している可能性があります)、次の操作を実行できます。

(From:http ://social.msdn.microsoft.com/Forums/en-US/winforms/thread/90834f20-c89f-42f9-92a8-f67ccee3799a/ )

WebBrowserコントロールでCookieをブロックするには、次の手順を実行できます。実際、IEでCookieをブロックするのと同じです。

  1. IEの[ツール]メニューから[インターネットオプション]を選択します。
  2. 「プライバシー」タブを選択します。
  3. [設定]グループボックスの[詳細...]ボタンをクリックします。
  4. [自動Cookie処理を上書きする]オプションをオンにします。
  5. 両方の「ブロック」オプションをチェックします。
  6. 「OK」をクリックします

ページにアクセスした後にすべてのCookieを削除することもできますが、これで完全に匿名になるという目標は達成されないと思います。

少し掘り下げてみましたが、 InternetSetOptionINTERNET_SUPPRESS_COOKIE_PERSISTフラグを使用できると思います。ドキュメントによると、これはInternetExplorer8以降でのみ機能します。

private const int INTERNET_OPTION_SUPPRESS_BEHAVIOR = 3; //INTERNET_SUPPRESS_COOKIE_PERSIST - Suppresses the persistence of cookies, even if the server has specified them as persistent.

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength); 

次に、アプリを初期化するときに、次のことを試してください。

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SUPPRESS_BEHAVIOR, IntPtr.Zero, 0);

うまくいけば、これはあなたを正しい軌道に乗せるでしょう。参照:

任意のドメインのWebBrowserControlからCookieを設定および削除する方法

InternetSetOptionを使用するにはどうすればよいですか?

WinformアプリケーションでWinInetを使用して複数のWebブラウザコントロールのCookieキャッシュをクリアする

于 2012-12-10T00:17:05.813 に答える
3

オプション フラグINTERNET_OPTION_SUPPRESS_BEHAVIORを指定してInternetSetOptionを使用できます。このオプション フラグは、INTERNET_SUPPRESS_COOKIE_PERSIST オプションと一緒に使用する必要があります。

public static class NativeMethods
{
    [DllImport("wininet.dll", SetLastError = true)]
    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, 
                                                 IntPtr lpBuffer, int lpdwBufferLength);

    public static void SuppressCookiePersist()
    {
        int dwOption = 81; //INTERNET_OPTION_SUPPRESS_BEHAVIOR
        int option = 3; // INTERNET_SUPPRESS_COOKIE_PERSIST

        IntPtr optionPtr = Marshal.AllocHGlobal(sizeof(int));
        Marshal.WriteInt32(optionPtr, option);

        InternetSetOption(IntPtr.Zero, dwOption, optionPtr, sizeof(int));
        Marshal.FreeHGlobal(optionPtr);
    }
}

設定はプロセスごとに有効であるため、メソッドは任意の場所で呼び出すことができますが、webBrowser.Navigate().

注:
- Internet Explorer 8.0 以降が必要です。
- 使用をリセットするにはint option = 4; //INTERNET_SUPPRESS_COOKIE_PERSIST_RESET

于 2016-05-26T14:23:06.493 に答える