Отключить чтение/запись файлов cookie в приложении С# веб-браузера

Я хочу, чтобы веб-сайты не могли читать файлы cookie или записывать новые файлы cookie в приложении управления веб-браузером С#. Я предпочту отключить все операции чтения/записи файлов cookie для всех веб-сайтов, когда запускается приложение С# веб-браузера, если нет, то у меня есть список веб-сайтов, чьи операции чтения/записи файлов cookie должны быть отключены.

Я использую .NET Framework 2.0, но также могу использовать 4.5.


person Computer User    schedule 10.12.2012    source источник


Ответы (2)


Вы не можете отключить файлы cookie только в своем веб-браузере. По сути, этот элемент управления представляет собой встроенный Internet Explorer и использует общие настройки Internet Explorer пользователя. Если вы не возражаете против блокировки файлов cookie во всех других экземплярах Internet Explorer (возможно, вы используете Chrome или Firefox для остальной части просмотра), вы можете сделать следующее:

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

Чтобы заблокировать файлы cookie в элементе управления WebBrowser, вы можете предпринять следующие шаги, фактически это то же самое, что и блокировать файлы cookie в IE.

  1. Выберите «Свойства обозревателя» в меню «Инструменты» в IE;
  2. Выберите вкладку «Конфиденциальность».
  3. Нажмите кнопку «Дополнительно…» в групповом поле «Настройки».
  4. Установите флажок «Переопределить автоматическую обработку файлов cookie».
  5. Отметьте обе опции «Блокировать».
  6. Нажмите «ОК»

Вы также можете удалить все файлы 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);

Надеюсь, это поставит вас на правильный путь. Смотрите также:

Как установить и удалить файлы cookie из веб-браузера Управление произвольными доменами

Как использовать InternetSetOption?

Очистить кэш файлов cookie для управления несколькими веб-браузерами с помощью WinInet в приложении Winform

person JoshVarty    schedule 10.12.2012

Вы можете использовать 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 или более поздней версии.
 – Для сброса используйте int option = 4; //INTERNET_SUPPRESS_COOKIE_PERSIST_RESET.

person ramaral    schedule 26.05.2016