python webkit webview还记得cookies吗?

2024-09-30 06:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个简短的python脚本,在web视图窗口中打开Google音乐。然而,我似乎找不到任何关于让webkit使用cookies的信息,这样我就不必每次启动它时都登录。在

以下是我所拥有的:

#!/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()

如果有任何帮助,我们将不胜感激, 谢谢

理查德


Tags: importhttpgtksessionlibusrurictypes
2条回答

解决了,但这需要学习更多的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,您可能更喜欢,不过我相信文本文件会更易于开发。在

编辑:实际上,cookiejar删除似乎没有任何作用,所以适当的片段是

^{pr2}$

我知道这个老问题,一直在到处寻找答案。经过一番尝试和错误后,我终于独立了。希望这能帮助别人。在

这和马特的回答基本相同,只是用了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)

相关问题 更多 >

    热门问题