ozonar
@ozonar
PHP, JS, webRTC

C# Как очистить все cookies в WebBrowser?

Есть варианты переходить браузером вызывая джаваскрипт очистки (парсер съел код) но данный код работает только для одного конкретного сайта и то через раз.

Также есть вариант чистить директорию

string Path = Environment.GetFolderPath(Environment.SpecialFolder.Cookies);
            try
            {
                System.IO.Directory.Delete(Path, true);
            }
            catch (Exception)
            {
            }

но этот вариант работает только после перезагрузки приложения. Ещё есть вполне рабочий вариант

Process.Start("cmd.exe", "/C RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255");

но запускать фоном cmd ради чисти кукис, это капец.

Есть какой-либо более-менее адекватный способ, чтобы не пришлось мытариться как описано выше?

UPD: Работает данный метод: mdb-blog.blogspot.ru/2013/02/c-winforms-webbrowser...
Но для этого метода должен быть разрешен небезопасный код.
  • Вопрос задан
  • 4847 просмотров
Решения вопроса 1
ozonar
@ozonar Автор вопроса
PHP, JS, webRTC
Действительно удалила кукисы строка:
browser.Document.Cookie = name +"=; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
что добавило ещё один относительно бессмысленный способ к моей копилке дурацких способов удаления кукисов.

Хм.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@mayorovp
WebBrowser - это Internet Explorer
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C#
Попробуйте вот это свойство установить в null или пустую строку.
Ответ написан
@nequtr
все чушь, вот рабочий код для вк, т.е. апи функции надежны на 100%, минус в том, что нужно понять как работать с InternetGetCookie:

InternetSetCookie("m.vk.com", "remixsid", ""); //например очистить авторизацию в вк

для конкретно под каждый сайт думаю несложно догадаться
try{
foreach (Cookie c in Core.ActClient.CookieContainer.GetCookies(new Uri("m.vk.com"))){
InternetSetCookie("m.vk.com",c.Name, "");
}
}catch{}

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetGetCookie(
string lpszUrlName,
string lpszCookieName,
StringBuilder lpszCookieData,
[MarshalAs(UnmanagedType.U4)]
ref int lpdwSize
);

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(
string lpszUrlName,
string lpszCookieName,
string lpszCookieData
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы