#!/usr/bin/env python # -*- coding: utf-8 -*- import gi gi.require_version('WebKit', '3.0') from gi.repository import WebKit from gi.repository import Soup from gi.repository import Gtk from os.path import expanduser def go_clicked(btn): url = text.get_text() if url: if not url.startswith('http'): url = 'http://'+url browser.open(url) def refresh_clicked(btn): browser.reload() def title_changed(webview, frame, title): text.set_text(frame.get_uri()) def load_progress_change(webview, amount): progress.set_fraction(amount / 100.0) def load_started(webview, frame): progress.set_visible(True) def load_finished(webview, frame): html = webview.get_main_frame().get_data_source().get_data().str progress.set_visible(False) def on_destroy(widget): Gtk.main_quit() def resource_start(view, frame, resource, request, response): # Stop Requests if 'some-ad-or-site' in request.get_uri(): request.set_uri ('about:blank') def resource_finish(view, frame, resource): pass window = Gtk.Window() window.connect("destroy", on_destroy) window.set_default_size(640, 480) window.set_title('Browser') go = Gtk.Button('Go!') go.connect('clicked', go_clicked) refresh = Gtk.Button(stock=Gtk.STOCK_REFRESH) refresh.connect('clicked', refresh_clicked) text = Gtk.Entry() progress = Gtk.ProgressBar() cookiejar = Soup.CookieJarText.new(expanduser("~")+'/cookies.txt', False) cookiejar.set_accept_policy(Soup.CookieJarAcceptPolicy.ALWAYS) browser = WebKit.WebView() settings = WebKit.WebSettings() user_agent = settings.get_property('user-agent') settings.set_property("enable-plugins", True) settings.set_property('user-agent', 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10') browser.set_settings(settings) session = WebKit.get_default_session() session.add_feature(cookiejar) browser.open('http://example.com') browser.connect('title-changed', title_changed) browser.connect('load-progress-changed', load_progress_change) browser.connect('load-finished', load_finished) browser.connect('load-started', load_started) browser.connect('resource-request-starting', resource_start) browser.connect('resource-load-finished', resource_finish) scroller = Gtk.ScrolledWindow() scroller.add(browser) hbox = Gtk.HBox() hbox.pack_start(text, True, True, 0) hbox.pack_start(refresh, False, False, 0) hbox.pack_start(go, False, False, 0) vbox = Gtk.VBox() vbox.pack_start(hbox, False,True, 0) vbox.pack_start(scroller, True, True, 0) vbox.pack_start(progress, False, False, 0) window.add(vbox) window.show_all() Gtk.main()