在webbrowser c#应用程序中禁用Cookie读/写
我希望网站无法在webbrowser c#control应用程序中读取cookie或编写新的cookie。 我希望在webbrowser c#应用程序运行时禁用所有网站的所有读/写cookie操作,如果没有,那么我有一个网站列表,其读/写cookie操作应该被禁用。
我使用的是.NET 2.0框架,但也可以使用4.5
您无法仅在Web浏览器控件上禁用Cookie。 该控件本质上是一个嵌入式Internet Explorer,并共享用户的Internet Explorer设置。 如果您不介意在所有其他Internet Explorer实例上阻止cookie(也许您在浏览的其余部分使用Chrome或Firefox),则可以执行以下操作:
(来自: http : //social.msdn.microsoft.com/Forums/en-US/winforms/thread/90834f20-c89f-42f9-92a8-f67ccee3799a/ )
要在WebBrowser控件中阻止Cookie,您可以执行以下步骤,实际上,它与在IE中阻止Cookie相同。
- 在IE上的“工具”菜单下选择“Internet选项”;
- 选择“隐私”选项卡。
- 单击“设置”组框中的“高级…”按钮。
- 选中“覆盖自动cookie处理”选项。
- 检查两个“阻止”选项。
- 点击“确定”
您也可以在访问页面后删除所有Cookie,但我认为这不会实现您完全匿名的目标。
我做了一点挖掘,我认为你可以使用InternetSetOption和INTERNET_SUPPRESS_COOKIE_PERSIST标志。 根据文档,这仅适用于Internet Explorer 8及更高版本。
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);
希望这会让你走上正轨。 也可以看看:
如何为WebBrowser Control设置和删除任意域的cookie
我如何使用InternetSetOption?
使用Winform应用程序中的WinInet清除多个WebBrowser控件的Cookie缓存
您可以将InternetSetOption与选项标志INTERNET_OPTION_SUPPRESS_BEHAVIOR一起使用 。 此选项标志应与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或更高版本。
– 要重置use int option = 4; //INTERNET_SUPPRESS_COOKIE_PERSIST_RESET
int option = 4; //INTERNET_SUPPRESS_COOKIE_PERSIST_RESET