Как очистить куки в WebKit? - PullRequest
       11

Как очистить куки в WebKit?

1 голос
/ 14 сентября 2010

В настоящее время я работаю с PyWebKitGtk в Python (http://live.gnome.org/PyWebKitGtk).. Я хотел бы очистить все куки в своем собственном небольшом браузере. Я нашел интересный метод webkit.HTTPResponse.clearCookies (), но не знаю, каквозлагать руки на экземпляр объекта HTTPResponse: /

Я бы не хотел использовать сценарий Java для этой задачи.

1 Ответ

0 голосов
/ 04 января 2012

Если вы посмотрите на текущее состояние привязок на GitHub , вы увидите, что PyWebKitGTK пока не предоставляет совсем то, что вам нужно - нет сопоставления для HTTPResponse Тип это выглядит так.К сожалению, я думаю, что Javascript или прокси-сервер - это ваши единственные варианты прямо сейчас.

РЕДАКТИРОВАТЬ:

... если, конечно, вы не хотите, чтобы real плохо и оставалисьдо ночи, изучая типы.В этом случае вы можете сделать магию.Чтобы очистить все куки-файлы браузера, попробуйте это.

import gtk, webkit, ctypes

libwebkit = ctypes.CDLL('libwebkit-1.0.so')
libgobject = ctypes.CDLL('libgobject-2.0.so')
libsoup = ctypes.CDLL('libsoup-2.4.so')

v = webkit.WebView()

#do whatever it is you do with WebView...
....

#get the cookiejar from the default session
#(assumes one session and one cookiesjar)
generic_cookiejar_type = libgobject.g_type_from_name('SoupCookieJar')
cookiejar = libsoup.soup_session_get_feature(session, generic_cookiejar_type)

#build a callback to delete cookies
DEL_COOKIE_FUNC = ctypes.CFUNCTYPE(None, ctypes.c_void_p)
def del_cookie(cookie):
    libsoup.soup_cookie_jar_delete_cookie(cookiejar, cookie)

#run the callback on all the cookies
cookie_list =  libsoup.soup_cookie_jar_all_cookies(cookiejar)
libsoup.g_slist_foreach(cookie_list, DEL_COOKIE_FUNC(del_cookie), None)

РЕДАКТИРОВАТЬ:

Просто начал нуждаться в этом сам, и хотя это правильная идея, он нуждался в работе.Вместо этого попробуйте это - тип функции и доступ к cookiejar фиксированы.

#add a new cookie jar
cookiejar = libsoup.soup_cookie_jar_new()

#uncomment the below line for a persistent jar instead
#cookiejar = libsoup.soup_cookie_jar_text_new('/path/to/your/cookies.txt',False)

libsoup.soup_session_add_feature(session, cookiejar)

#build a callback to delete cookies
DEL_COOKIE_FUNC = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_void_p, ctypes.c_void_p)
def del_cookie(cookie, userdata):
    libsoup.soup_cookie_jar_delete_cookie(cookiejar, cookie)
    return 0

#run the callback on all the cookies
cookie_list =  libsoup.soup_cookie_jar_all_cookies(cookiejar)
libsoup.g_slist_foreach(cookie_list, DEL_COOKIE_FUNC(del_cookie), None)

Обратите внимание, что вы должны делать это только за до , используя WebView, или, возможно, в обратных вызовах WebKit, или выесть проблемы с многопоточностью сверх тех, которые обычно связаны с программированием GTK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...