【问题标题】:python webkit webview remember cookies?python webkit webview 还记得cookies吗?
【发布时间】:2011-10-14 10:37:50
【问题描述】:

我编写了一个简短的 Python 脚本,可以在 Web 视图窗口中打开 Google 音乐。但是我似乎找不到任何关于让 webkit 使用 cookie 的信息,这样我就不必每次启动它时都登录。

这是我所拥有的:

#!/usr/bin/env python
import gtk, webkit
import ctypes

libgobject = ctypes.CDLL('/usr/lib/i386-linux-gnu/libgobject-2.0.so.0')
libwebkit = ctypes.CDLL('/usr/lib/libsoup-2.4.so.1')
libsoup = ctypes.CDLL('/usr/lib/libsoup-2.4.so.1')
libwebkit = ctypes.CDLL('/usr/lib/libwebkitgtk-1.0.so.0')

proxy_uri = libsoup.soup_uri_new('http://tcdproxy.tcd.ie:8080') #proxy urli

session = libwebkit.webkit_get_default_session()
libgobject.g_object_set(session, "proxy-uri", proxy_uri, None)

w = gtk.Window()
w.connect("destroy",w.destroy)
w.set_size_request(1000,600)
w.connect('delete-event', lambda w, event: gtk.main_quit())
s = gtk.ScrolledWindow()
v = webkit.WebView()
s.add(v)
w.add(s)
w.show_all()

v.open('http://music.google.com')
gtk.main()

对此的任何帮助将不胜感激, 谢谢,

理查德

【问题讨论】:

  • 我自己正在处理这个问题。为了让其他可能回答这个问题的人更清楚,请考虑修复所有 ctypes 行——很确定第一个 libwebkit 引用是一个意外。

标签: python cookies webkit


【解决方案1】:

解决了,但它需要学习比我想要的更多的 ctypes -_-。试试这个 - 我需要与你不同的库路径等,所以我只会粘贴相关的内容。

#remove all cookiejars
generic_cookiejar_type = libgobject.g_type_from_name('SoupCookieJar')
libsoup.soup_session_remove_feature_by_type(session, generic_cookiejar_type)

#and replace with a new persistent jar
cookiejar = libsoup.soup_cookie_jar_text_new('/path/to/your/cookies.txt',False)
libsoup.soup_session_add_feature(session, cookiejar)

代码非常不言自明。还有一个您可能更喜欢的SoupCookieJarSqlite,但我确信该文本文件更易于开发。

编辑:实际上,cookie jar 删除似乎没有做任何事情,所以适当的 sn-p 是

#add a new persistent cookie jar
cookiejar = libsoup.soup_cookie_jar_text_new('/path/to/your/cookies.txt',False)
libsoup.soup_session_add_feature(session, cookiejar)

【讨论】:

  • 对我来说完美无缺,这也解决了我在使用 webkit + iframe + 我们正在使用的支付提供商时遇到的问题..
  • 当我尝试将其添加到 gtk 线程时,工作不那么完美
【解决方案2】:

我知道它的老问题,并且一直在寻找答案。经过一些试验和错误后,我终于自己提出来了。希望这对其他人有帮助。

这与 Matt 的回答基本相同,只是使用 GIR 内省,感觉更像 Python。

from gi.repository import Soup
cookiejar = Soup.CookieJarText.new("<Your cookie path>", False)
cookiejar.set_accept_policy(Soup.CookieJarAcceptPolicy.ALWAYS)
session = WebKit.get_default_session()
session.add_feature(cookiejar)

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多