When it comes need to have browser that we will using with specific task and run behind proxy, we can rely on PyQT4.
Here is the the code that taken from :
http://code.activestate.com/recipes/576921-using-proxy-connection-for-qwebview/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | ## {{{ http://code.activestate.com/recipes/576921/ (r4) import os import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * from PyQt4.QtNetwork import * __version__ = "0.1 20091002" __appname__ = "minibrowser" TITLE = "%s %s" % (__appname__, __version__) HOMEPAGE = "http://example.com/" HISTORY = os.path.join(os.path.dirname(sys.argv[0]), "%s.log" % (__appname__)) class BrowserWidget(QWidget): def __init__(self, datpath, parent=None): super(self.__class__, self).__init__(parent) self.browser = QWebView() self.lineedit = QLineEdit() layout = QVBoxLayout() layout.setSpacing(0) layout.setMargin(0) layout.addWidget(self.lineedit) layout.addWidget(self.browser) self.setLayout(layout) self.lineedit.setFocus() self.connect(self.lineedit, SIGNAL("returnPressed()"), self.entrytext) self.browser.load(QUrl(HOMEPAGE)) self.browser.show() def entrytext(self): self.browser.load(QUrl(self.lineedit.text())) class Window(QMainWindow): def __init__(self, histlogpath, parent=None): super(self.__class__, self).__init__(parent) self.browserWindow = BrowserWidget(histlogpath) self.setCentralWidget(self.browserWindow) self.setWindowTitle(TITLE) status = self.statusBar() status.setSizeGripEnabled(True) self.label = QLabel("") status.addWidget(self.label, 1) self.connect(self.browserWindow.browser, SIGNAL("loadFinished(bool)"), self.loadFinished) self.connect(self.browserWindow.browser, SIGNAL("loadProgress(int)"), self.loading) self.histlogpath = histlogpath def loadFinished(self, flag): """SLOT of load finished. """ self.label.setText("Done") open(self.histlogpath, ‘a’).write(self.browserWindow.browser.url().toString() + "n") def loading(self, percent): """SLOT of loading progress. """ self.label.setText("Loading %d%%" % percent) self.browserWindow.lineedit.setText(self.browserWindow.browser.url().toString()) if __name__ == ‘__main__’: QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.HttpProxy, "proxy.example.com", 8080)) app = QApplication(sys.argv) window = Window(HISTORY) window.show() app.exec_() ## end of http://code.activestate.com/recipes/576921/ }}} |