Python WebKit WebView помните куки? - PullRequest
4 голосов
/ 14 октября 2011

Я написал короткий скрипт на python, который открывает Google-музыку в окне веб-просмотра. однако я не могу найти ничего о том, как заставить webkit использовать куки, чтобы мне не приходилось входить в систему каждый раз, когда я запускаю его.

Вот что у меня есть:

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

Любая помощь по этому вопросу будет принята с благодарностью, спасибо,

Richard

Ответы [ 2 ]

7 голосов
/ 04 января 2012

Сработало, но потребовалось изучение большего количества типов, чем я хотел -_-. Попробуйте это - мне потребовались другие пути к библиотекам и т. Д., Чем вы, поэтому я просто вставлю то, что имеет отношение.

#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 , который вы можете предпочесть, хотя я уверен, что текстовый файл будет проще для разработки.

РЕДАКТИРОВАТЬ: на самом деле удаление банки с печеньем, похоже, ничего не делает, поэтому соответствующий фрагмент кода

#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)
6 голосов
/ 04 апреля 2013

Я знаю его старый вопрос и искал ответ повсюду. Наконец-то появился сам после проб и ошибок. Надеюсь, что это помогает другим.

Это в основном тот же ответ от Мэтта, просто использующий интроспекцию 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...