从python WebKit.WebView

时间:2016-08-29 07:28:48

标签: cookies paypal webview webkit pygtk

我有一个嵌入式PyGtk的{​​{1}}应用。用户通过嵌入式浏览器登录我们的服务,他们可以在PayPal页面进行付款。

此应用程序由同一会话中的不同用户使用,因此问题是PayPal会烘焙Cookie并记住上次付款的电子邮件。

我只想完成付款并从WebKit.WebView删除与PayPal相关的Cookie,但我找不到任何有关删除Cookie的文档。

重新创建WebView不是一个选项,因为我的网页加载非常繁重。

任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:0)

我自己想通了。

首先我添加了一个自定义cookiejar。这允许我处理cookie

from gi.repository import Soup

cookiejar = Soup.CookieJarText.new("cookies/biscottini.txt", False)
cookiejar.set_accept_policy(Soup.CookieJarAcceptPolicy.ALWAYS)

session = gi.repository.WebKit.get_default_session()
session.add_feature(cookiejar)

然后我找到了Soup类结构并写下了这个简单的片段来清除cookie(还有一个过滤器只删除PayPal cookie)

def clearCookies(deleteAll=False):       

    for cookie in cookiejar.all_cookies():
        if deleteAll or ('paypal' in cookie.get_domain().lower()):            
            cookiejar.delete_cookie(cookie)

我现在遇到了一个问题:在我尝试付款后清理PayPal的Cookie后,我收到错误消息:“消息损坏”