我目前在Python中使用PyWebKitGtk(http://live.gnome.org/PyWebKitGtk)。我想在我自己的小浏览器中清除所有Cookie。我发现有趣的方法webkit.HTTPResponse.clearCookies(),但我不知道如何奠定我的手HTTPResponse对象的实例:/如何清除WebKit中的cookies?
我不想使用Java脚本的任务。
我目前在Python中使用PyWebKitGtk(http://live.gnome.org/PyWebKitGtk)。我想在我自己的小浏览器中清除所有Cookie。我发现有趣的方法webkit.HTTPResponse.clearCookies(),但我不知道如何奠定我的手HTTPResponse对象的实例:/如何清除WebKit中的cookies?
我不想使用Java脚本的任务。
如果你看一下绑定上GitHub目前的状态,你会看到PyWebKitGTK doesn't yet provide挺你want-什么就有什么不是映射为HTTPResponse
类型样子。不幸的是,我认为Javascript或代理是你现在唯一的选择。
编辑:
...除非,当然,你想要它真正不好,熬夜到深夜学习ctypes的。在这种情况下,你可以做魔术。要清除全部浏览器的Cookie,请尝试此操作。
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程序相关的线程问题。
尽管现在我已经完成了所有这些,但我担心你的意思是*只针对特定请求/响应,这将是完全不同的= / – 2012-01-04 06:35:27
您正在使用哪种Python WebKit API? – llasram 2010-09-14 01:48:50
嗯 - 你的意思是(或曾经被称为)webkit,服务器端的好旧的webware的一部分;或者,例如非常流行的浏览器构建/渲染工具包, Safari和Chrome,并通过Qt,Gtk,wx,...与Python(客户端)进行各种接口?当然,它会产生巨大的差异(例如,如果服务器端,为什么要将cookie放在首位以及如何?对于cookie只在HTTP请求和服务器观点的响应中才感到意外......),包括,如果客户端,你用什么GUI工具包 - 所以请澄清! – 2010-09-14 01:57:11
问题是关于PyWebKitGtk(http://live.gnome.org/PyWebKitGtk),对此感到抱歉:) – BPS 2010-09-14 09:35:41