Ric*_*sse 4 python cookies webkit
我写了一个简短的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()
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激,谢谢,
理查德
解决了它,但它需要学习比我想要的更多的类型-_-.试试这个 - 我需要不同的库路径等,所以我只是粘贴相关的.
#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)
Run Code Online (Sandbox Code Playgroud)
代码非常自我解释.还有一个你可能更喜欢的SoupCookieJarSqlite,不过我确信文本文件更容易开发.
编辑:实际上,cookie jar删除似乎没有做任何事情,所以适当的片段是
#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)
Run Code Online (Sandbox Code Playgroud)
我知道它的老问题,并一直在寻找答案.在经过一些试验和错误之后,我终于出现了.希望这有助于其他人.
这基本上是马特的答案,只是使用GIR内省而且感觉更加诡异.
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)
Run Code Online (Sandbox Code Playgroud)