Exemplo n.º 1
0
def setProxy(self,arg):
	item = arg.split(':')
	if len(item) == 2:
		proxy = QNetworkProxy(QNetworkProxy.HttpProxy,item[0],int(item[1]))
		QNetworkProxy.setApplicationProxy(proxy)
	else:
		QNetworkProxyFactory.setUseSystemConfiguration(True)
Exemplo n.º 2
0
    def set_proxy(self, proxy=None):
        """Set the proxy or using system configuration as None,supported socks5 http{s}.

        @param proxy: Example:socks5://username:[email protected]:7070
        """
        proxy_type = None
        if proxy:
            parse = urlparse(proxy)
            scheme = parse.scheme
            hostname = parse.hostname
            port = parse.port
            username = parse.username or ''
            password = parse.password or ''

            if scheme == 'socks5':
                proxy_type = QNetworkProxy.Socks5Proxy
            elif scheme in ('http', 'https'):
                proxy_type = QNetworkProxy.HttpProxy

        if proxy_type:
            self.page.networkAccessManager().setProxy(
                QNetworkProxy(proxy_type, hostname, port, username, password)
            )
        else:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
Exemplo n.º 3
0
def mainPyQt4Youtube():
    # 必要なモジュールのimport
    from PyQt4.QtCore import QUrl
    from PyQt4.QtGui import QApplication
    from PyQt4.QtWebKit import QWebView, QWebSettings
    from PyQt4.QtNetwork import QNetworkProxyFactory

    url = 'https://www.youtube.com/?hl=ja&gl=JP'

    app = QApplication(sys.argv)

    # Youtube動画を読み込むための設定
    QNetworkProxyFactory.setUseSystemConfiguration(True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.DnsPrefetchEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.JavascriptEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.OfflineStorageDatabaseEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.AutoLoadImages, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.LocalStorageEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.PrivateBrowsingEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)

    # QWebViewによるWebページ表示
    browser = QWebView()
    browser.load(QUrl(url))
    browser.setEnabled(True)
    browser.show()
    sys.exit(app.exec_())
Exemplo n.º 4
0
 def _set_proxy(manager, server_url=None):
     proxy_settings = manager.get_proxy_settings()
     if proxy_settings.config == 'Manual':
         if proxy_settings.server and proxy_settings.port:
             proxy = QNetworkProxy(QNetworkProxy.HttpProxy,
                                   hostName=proxy_settings.server,
                                   port=int(proxy_settings.port))
             if proxy_settings.authenticated:
                 proxy.setPassword(proxy_settings.password)
                 proxy.setUser(proxy_settings.username)
             QNetworkProxy.setApplicationProxy(proxy)
     elif proxy_settings.config == 'System':
         QNetworkProxyFactory.setUseSystemConfiguration(True)
     elif proxy_settings.config == 'Automatic':
         proxy_settings = manager.get_proxies(server_url)
         protocol = server_url.split(":")[0]
         proxy_server_info = urllib2.urlparse.urlparse(
             proxy_settings[protocol])
         proxy = QNetworkProxy(QNetworkProxy.HttpProxy,
                               hostName=proxy_server_info.hostname,
                               port=proxy_server_info.port)
         QNetworkProxy.setApplicationProxy(proxy)
     else:
         QNetworkProxy.setApplicationProxy(
             QNetworkProxy(QNetworkProxy.NoProxy))
Exemplo n.º 5
0
    def set_proxy(self, proxy=None):
        """Set the proxy or using system configuration as None,supported socks5 http{s}.

        @param proxy: Example:socks5://username:[email protected]:7070
        """
        proxy_type = None
        if proxy:
            parse = urlparse(proxy)
            scheme = parse.scheme
            hostname = parse.hostname
            port = parse.port
            username = parse.username or ''
            password = parse.password or ''

            if scheme == 'socks5':
                proxy_type = QNetworkProxy.Socks5Proxy
            elif scheme in ('http', 'https'):
                proxy_type = QNetworkProxy.HttpProxy

        if proxy_type:
            self.page.networkAccessManager().setProxy(
                QNetworkProxy(proxy_type, hostname, port, username, password)
            )
        else:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
Exemplo n.º 6
0
def mainPyQt4Youtube():
    # 必要なモジュールのimport
    from PyQt4.QtCore import QUrl
    from PyQt4.QtGui import QApplication
    from PyQt4.QtWebKit import QWebView, QWebSettings
    from PyQt4.QtNetwork import QNetworkProxyFactory

    url = "https://www.youtube.com/?hl=ja&gl=JP"

    app = QApplication(sys.argv)

    # Youtube動画を読み込むための設定
    QNetworkProxyFactory.setUseSystemConfiguration(True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.DnsPrefetchEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.JavascriptEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.OfflineStorageDatabaseEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.AutoLoadImages, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.LocalStorageEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.PrivateBrowsingEnabled, True)
    QWebSettings.globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)

    # QWebViewによるWebページ表示
    browser = QWebView()
    browser.load(QUrl(url))
    browser.setEnabled(True)
    browser.show()
    sys.exit(app.exec_())
Exemplo n.º 7
0
    def __init__(self, args, parent=None):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_defaultPageSettings = {}
        self.m_pages = []
        self.m_verbose = args.verbose
        self.m_page = WebPage(self)
        self.m_returnValue = 0
        self.m_terminated = False
        # setup the values from args
        self.m_scriptFile = args.script
        self.m_args = args.script_args

        self.m_filesystem = FileSystem(self)
        self.m_pages.append(self.m_page)

        do_action('PhantomInitPre')

        if not args.proxy:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0],
                                  int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        # Provide WebPage with a non-standard Network Access Manager
        self.m_netAccessMan = NetworkAccessManager(args.disk_cache,
                                                   args.ignore_ssl_errors,
                                                   self)
        self.m_page.setNetworkAccessManager(self.m_netAccessMan)

        self.m_page.javaScriptConsoleMessageSent.connect(
            self.printConsoleMessage)

        self.m_defaultPageSettings['loadImages'] = args.load_images
        self.m_defaultPageSettings['loadPlugins'] = args.load_plugins
        self.m_defaultPageSettings['userAgent'] = self.m_page.userAgent()
        self.m_defaultPageSettings[
            'localAccessRemote'] = args.local_access_remote
        self.m_page.applySettings(self.m_defaultPageSettings)

        self.libraryPath = os.path.dirname(os.path.abspath(self.m_scriptFile))

        # inject our properties and slots into javascript
        self.m_page.mainFrame().addToJavaScriptWindowObject('phantom', self)
        self.m_page.mainFrame().addToJavaScriptWindowObject(
            'fs', self.m_filesystem)

        bootstrap = QFile(':/bootstrap.js')
        if not bootstrap.open(QFile.ReadOnly):
            sys.exit('Can not bootstrap!')
        bootstrapper = str(bootstrap.readAll())
        bootstrap.close()
        if not bootstrapper:
            sys.exit('Can not bootstrap!')
        self.m_page.mainFrame().evaluateJavaScript(bootstrapper)

        do_action('PhantomInitPost')
Exemplo n.º 8
0
 def __init__(self, view: Amendment('view/', lambda v: hasattr(v, 'mode') and (v.mode.name == 'web') and (v.widget is None))): #, orig_editor=None):
     self.view = view
     QWebView.__init__(self)
     view.widget = self
     self.load(QUrl(view.filebuf.file_name))
     self.page().setContentEditable(True)
     QNetworkProxyFactory.setUseSystemConfiguration(True);
     QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True);
     QWebSettings.globalSettings().setAttribute(QWebSettings.AutoLoadImages, True);
Exemplo n.º 9
0
    def __init__(self, parent, args):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_defaultPageSettings = {}
        self.m_pages = []
        self.m_verbose = args.verbose
        self.m_page = WebPage(self)
        self.m_returnValue = 0
        self.m_terminated = False
        # setup the values from args
        self.m_scriptFile = args.script
        self.m_args = args.script_args

        self.m_filesystem = FileSystem(self)

        self.m_pages.append(self.m_page)

        do_action('PhantomInitPre')

        if args.proxy is None:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        # Provide WebPage with a non-standard Network Access Manager
        self.m_netAccessMan = NetworkAccessManager(self, args.disk_cache, args.cookies, args.ignore_ssl_errors)
        self.m_page.setNetworkAccessManager(self.m_netAccessMan)

        self.m_page.javaScriptConsoleMessageSent.connect(self.printConsoleMessage)

        self.m_defaultPageSettings['loadImages'] = args.load_images
        self.m_defaultPageSettings['loadPlugins'] = args.load_plugins
        self.m_defaultPageSettings['javascriptEnabled'] = True
        self.m_defaultPageSettings['XSSAuditingEnabled'] = False
        self.m_defaultPageSettings['userAgent'] = self.m_page.userAgent()
        self.m_defaultPageSettings['localAccessRemote'] = args.local_access_remote
        self.m_page.applySettings(self.m_defaultPageSettings)

        self.libraryPath = os.path.dirname(os.path.abspath(self.m_scriptFile))

        # inject our properties and slots into javascript
        self.m_page.mainFrame().addToJavaScriptWindowObject('phantom', self)
        self.m_page.mainFrame().addToJavaScriptWindowObject('fs', self.m_filesystem)

        bootstrap = QFile(':/bootstrap.js')
        if not bootstrap.open(QFile.ReadOnly):
            sys.exit('Can not bootstrap!')
        bootstrapper = str(bootstrap.readAll())
        bootstrap.close()
        if not bootstrapper:
            sys.exit('Can not bootstrap!')
        self.m_page.mainFrame().evaluateJavaScript(bootstrapper)

        do_action('PhantomInitPost')
Exemplo n.º 10
0
    def __init__(self, args, parent = None):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_loadStatus = self.m_state = ''
        self.m_var = self.m_paperSize = self.m_loadScript_cache = {}
        self.m_verbose = args.verbose
        self.m_page = WebPage(self)
        self.m_clipRect = QRect()
        # setup the values from args
        self.m_script = args.script.read()
        self.m_scriptFile = args.script.name
        self.m_scriptDir = os.path.dirname(args.script.name)
        if sys.platform.startswith('win'):
            self.m_scriptDir += '\\'
        else:
            self.m_scriptDir += '/'
        self.m_args = args.script_args
        self.m_upload_file = args.upload_file
        autoLoadImages = False if args.load_images == 'no' else True
        pluginsEnabled = True if args.load_plugins == 'yes' else False

        args.script.close()

        palette = self.m_page.palette()
        palette.setBrush(QPalette.Base, Qt.transparent)
        self.m_page.setPalette(palette)

        if not args.proxy:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        self.m_page.settings().setAttribute(QWebSettings.AutoLoadImages, autoLoadImages)
        self.m_page.settings().setAttribute(QWebSettings.PluginsEnabled, pluginsEnabled)
        self.m_page.settings().setAttribute(QWebSettings.FrameFlatteningEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.OfflineStorageDatabaseEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.LocalStorageEnabled, True)
        self.m_page.settings().setLocalStoragePath(QDesktopServices.storageLocation(QDesktopServices.DataLocation))
        self.m_page.settings().setOfflineStoragePath(QDesktopServices.storageLocation(QDesktopServices.DataLocation))

        # Ensure we have a document.body.
        self.m_page.mainFrame().setHtml('<html><body></body></html>')

        self.m_page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
        self.m_page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)

        if self.m_verbose:
            m_netAccessMan = NetworkAccessManager(args.disk_cache, self)
            self.m_page.setNetworkAccessManager(m_netAccessMan)

        # inject our properties and slots into javascript
        self.m_page.mainFrame().javaScriptWindowObjectCleared.connect(self.inject)
        self.m_page.loadFinished.connect(self.finish)
Exemplo n.º 11
0
    def __init__(self, args, parent = None):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_loadStatus = self.m_state = QString()
        self.m_var = self.m_paperSize = self.m_loadScript_cache = {}
        self.m_verbose = args.verbose
        self.m_page = WebPage(self)
        self.m_clipRect = QRect()
        # setup the values from args
        self.m_script = QString.fromUtf8(args.script[0].read())
        self.m_scriptFile = args.script[0].name
        self.m_args = args.script[1:]
        self.m_upload_file = args.upload_file
        autoLoadImages = False if args.load_images == 'no' else True
        pluginsEnabled = True if args.load_plugins == 'yes' else False

        args.script[0].close()

        palette = self.m_page.palette()
        palette.setBrush(QPalette.Base, Qt.transparent)
        self.m_page.setPalette(palette)

        if not args.proxy:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        self.m_page.settings().setAttribute(QWebSettings.AutoLoadImages, autoLoadImages)
        self.m_page.settings().setAttribute(QWebSettings.PluginsEnabled, pluginsEnabled)
        self.m_page.settings().setAttribute(QWebSettings.FrameFlatteningEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.OfflineStorageDatabaseEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.LocalStorageEnabled, True)
        self.m_page.settings().setLocalStoragePath(QDesktopServices.storageLocation(QDesktopServices.DataLocation))
        self.m_page.settings().setOfflineStoragePath(QDesktopServices.storageLocation(QDesktopServices.DataLocation))

        # Ensure we have a document.body.
        self.m_page.mainFrame().setHtml('<html><body></body></html>')

        self.m_page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
        self.m_page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)

        # if our script was called in a different directory, change to it
        # to make any dealings with files be relative to the scripts directory
        if os.path.dirname(self.m_scriptFile):
            os.chdir(os.path.dirname(self.m_scriptFile))

        if self.m_verbose:
            m_netAccessMan = NetworkAccessManager(self)
            self.m_page.setNetworkAccessManager(m_netAccessMan)

        # inject our properties and slots into javascript
        self.connect(self.m_page.mainFrame(), SIGNAL('javaScriptWindowObjectCleared()'), self.inject)
        self.connect(self.m_page, SIGNAL('loadFinished(bool)'), self.finish)
Exemplo n.º 12
0
    def __init__(self, parent, args):
        super(Phantom, self).__init__(parent)

        # variable declarations
        self.m_defaultPageSettings = {}
        self.m_pages = []
        self.m_servers = []
        self.m_verbose = args.verbose
        self.m_page = WebPage(self, args)
        self.m_returnValue = 0
        self.m_terminated = False
        # setup the values from args
        self.app_args = args
        self.m_scriptFile = args.script
        self.m_args = args.script_args
        self.m_scriptEncoding = Encode(args.script_encoding, 'utf-8')
        self.m_outputEncoding = Encode(args.output_encoding,
                                       sys.stdout.encoding_sys)

        self.m_pages.append(self.m_page)

        do_action('PhantomInitPre')

        if args.proxy is None:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(args.proxy_type, args.proxy[0],
                                  int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        self.m_page.javaScriptConsoleMessageSent.connect(
            self.printConsoleMessage)

        self.m_defaultPageSettings['loadImages'] = args.load_images
        self.m_defaultPageSettings['loadPlugins'] = args.load_plugins
        self.m_defaultPageSettings['javascriptEnabled'] = True
        self.m_defaultPageSettings['XSSAuditingEnabled'] = False
        self.m_defaultPageSettings['userAgent'] = self.m_page.userAgent()
        self.m_defaultPageSettings[
            'localToRemoteUrlAccessEnabled'] = args.local_to_remote_url_access
        self.m_page.applySettings(self.m_defaultPageSettings)

        self.libraryPath = os.path.dirname(os.path.abspath(self.m_scriptFile))

        # inject our properties and slots into javascript
        self.m_page.mainFrame().addToJavaScriptWindowObject('phantom', self)

        with QPyFile(':/bootstrap.js') as f:
            self.m_page.mainFrame().evaluateJavaScript(f.readAll())

        do_action('PhantomInitPost')
Exemplo n.º 13
0
    def __init__(self, args, parent = None):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_loadStatus = self.m_state = self.m_userAgent = QString()
        self.m_page = WebPage(self)
        self.m_var = self.m_paperSize = self.m_loadScript_cache = {}
        # setup the values from args
        self.m_script = QString.fromUtf8(args.script[0].read())
        self.m_scriptFile = args.script[0].name
        self.m_args = args.script[1:]
        self.m_upload_file = args.upload_file
        autoLoadImages = False if args.load_images == 'no' else True
        pluginsEnabled = True if args.load_plugins == 'yes' else False

        args.script[0].close()

        palette = self.m_page.palette()
        palette.setBrush(QPalette.Base, Qt.transparent)
        self.m_page.setPalette(palette)

        if not args.proxy:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        self.m_page.settings().setAttribute(QWebSettings.AutoLoadImages, autoLoadImages)
        self.m_page.settings().setAttribute(QWebSettings.PluginsEnabled, pluginsEnabled)
        self.m_page.settings().setAttribute(QWebSettings.FrameFlatteningEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.OfflineStorageDatabaseEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.LocalStorageEnabled, True)
        self.m_page.settings().setLocalStoragePath(QDesktopServices.storageLocation(QDesktopServices.DataLocation))
        self.m_page.settings().setOfflineStoragePath(QDesktopServices.storageLocation(QDesktopServices.DataLocation))

        # Ensure we have a document.body.
        self.m_page.mainFrame().setHtml('<html><body></body></html>')

        self.m_page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
        self.m_page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)

        # if our script was called in a different directory, change to it
        # to make any dealings with files be relative to the scripts directory
        if os.path.dirname(self.m_scriptFile):
            os.chdir(os.path.dirname(self.m_scriptFile))

        # inject our properties and slots into javascript
        self.setObjectName('phantom')
        self.connect(self.m_page.mainFrame(), SIGNAL('javaScriptWindowObjectCleared()'), self.inject)
        self.connect(self.m_page, SIGNAL('loadFinished(bool)'), self.finish)
Exemplo n.º 14
0
 def _set_proxy(self, manager):
     proxy_settings = manager.get_proxy_settings()
     if proxy_settings.config == 'Manual':
         if proxy_settings.server and proxy_settings.port:
             proxy = QNetworkProxy(QNetworkProxy.HttpProxy, hostName=proxy_settings.server,
                                   port=int(proxy_settings.port))
             if proxy_settings.authenticated:
                 proxy.setPassword(proxy_settings.password)
                 proxy.setUser(proxy_settings.username)
             QNetworkProxy.setApplicationProxy(proxy)
     elif proxy_settings.config == 'System':
         QNetworkProxyFactory.setUseSystemConfiguration(True)
     else:
         QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.NoProxy))
Exemplo n.º 15
0
 def _set_proxy(self, manager):
     proxy_settings = manager.get_proxy_settings()
     if proxy_settings.config == 'Manual':
         if proxy_settings.server and proxy_settings.port:
             proxy = QNetworkProxy(QNetworkProxy.HttpProxy, hostName=proxy_settings.server,
                                   port=int(proxy_settings.port))
             if proxy_settings.authenticated:
                 proxy.setPassword(proxy_settings.password)
                 proxy.setUser(proxy_settings.username)
             QNetworkProxy.setApplicationProxy(proxy)
     elif proxy_settings.config == 'System':
         QNetworkProxyFactory.setUseSystemConfiguration(True)
     else:
         QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.NoProxy))
Exemplo n.º 16
0
    def __init__(self, args, parent=None):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_defaultPageSettings = {}
        self.m_verbose = args.verbose
        self.m_page = WebPage(self)
        self.m_returnValue = 0
        self.m_terminated = False
        # setup the values from args
        self.m_script = args.script
        self.m_scriptFile = args.script_name
        self.m_args = args.script_args

        do_action('PhantomInitPre', Bunch(locals()))

        if not args.proxy:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        # Provide WebPage with a non-standard Network Access Manager
        self.m_netAccessMan = NetworkAccessManager(args.disk_cache, args.ignore_ssl_errors, self)
        self.m_page.setNetworkAccessManager(self.m_netAccessMan)

        self.m_page.javaScriptConsoleMessageSent.connect(self.printConsoleMessage)

        self.m_defaultPageSettings['loadImages'] = args.load_images
        self.m_defaultPageSettings['loadPlugins'] = args.load_plugins
        self.m_defaultPageSettings['userAgent'] = self.m_page.userAgent()
        self.m_page.applySettings(self.m_defaultPageSettings)

        # inject our properties and slots into javascript
        self.m_page.mainFrame().addToJavaScriptWindowObject('phantom', self)

        bootstrap = QFile(':/bootstrap.js')
        if not bootstrap.open(QFile.ReadOnly):
            qCritical('Can not bootstrap!')
            sys.exit(1)
        bootstrapper = str(bootstrap.readAll())
        bootstrap.close()
        if not bootstrapper:
            qCritical('Can not bootstrap!')
            sys.exit(1)
        self.m_page.mainFrame().evaluateJavaScript(bootstrapper)

        do_action('PhantomInitPost', Bunch(locals()))
 def queryProxy(self, query):
     """
     Public method to determine a proxy for a given query.
     
     @param query reference to the query object (QNetworkProxyQuery)
     @return list of proxies in order of preference (list of QNetworkProxy)
     """
     if query.queryType() == QNetworkProxyQuery.UrlRequest and \
        query.protocolTag() in ["http", "https", "ftp"] and \
        Preferences.getUI("UseProxy"):
         if Preferences.getUI("UseSystemProxy"):
             proxyList = QNetworkProxyFactory.systemProxyForQuery(query)
             if sys.platform not in ["darwin", "nt"] and \
                len(proxyList) == 1 and \
                proxyList[0].type() == QNetworkProxy.NoProxy:
                 # try it the Python way
                 # scan the environment for variables named <scheme>_proxy
                 # scan over whole environment to make this case insensitive
                 for name, value in os.environ.items():
                     name = name.lower()
                     if value and name[-6:] == '_proxy' and \
                        name[:-6] == query.protocolTag().toLower():
                         url = QUrl(value)
                         if url.scheme() in ["http", "https"]:
                             proxyType = QNetworkProxy.HttpProxy
                         else:
                             proxyType = QNetworkProxy.FtpCachingProxy
                         proxy = QNetworkProxy(proxyType, url.host(), url.port(), 
                                               url.userName(), url.password())
                         proxyList = [proxy]
                         break
             if proxyList:
                 proxyList[0].setUser(Preferences.getUI("ProxyUser"))
                 proxyList[0].setPassword(Preferences.getUI("ProxyPassword"))
                 return proxyList
             else:
                 return [QNetworkProxy(QNetworkProxy.NoProxy)]
         else:
             host = Preferences.getUI("ProxyHost")
             if not host:
                 QMessageBox.critical(None,
                     self.trUtf8("Proxy Configuration Error"),
                     self.trUtf8("""Proxy usage was activated"""
                                 """ but no proxy host configured."""))
                 return [QNetworkProxy(QNetworkProxy.DefaultProxy)]
             else:
                 pProxyType = Preferences.getUI("ProxyType")
                 if pProxyType == 0:
                     proxyType = QNetworkProxy.HttpProxy
                 elif pProxyType == 1:
                     proxyType = QNetworkProxy.HttpCachingProxy
                 elif pProxyType == 2:
                     proxyType = QNetworkProxy.Socks5Proxy
                 proxy = QNetworkProxy(proxyType, host, 
                     Preferences.getUI("ProxyPort"),
                     Preferences.getUI("ProxyUser"),
                     Preferences.getUI("ProxyPassword"))
                 return [proxy, QNetworkProxy(QNetworkProxy.DefaultProxy)]
     else:
         return [QNetworkProxy(QNetworkProxy.NoProxy)]
Exemplo n.º 18
0
    def __init__(self, parent, args):
        super(Phantom, self).__init__(parent)

        # variable declarations
        self.m_defaultPageSettings = {}
        self.m_pages = []
        self.m_verbose = args.verbose
        self.m_page = WebPage(self, args)
        self.m_returnValue = 0
        self.m_terminated = False
        # setup the values from args
        self.app_args = args
        self.m_scriptFile = args.script
        self.m_args = args.script_args
        self.m_scriptEncoding = Encode(args.script_encoding, 'utf-8')
        self.m_outputEncoding = Encode(args.output_encoding, sys.stdout.encoding_sys)

        self.m_pages.append(self.m_page)

        do_action('PhantomInitPre')

        if args.proxy is None:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        self.m_page.javaScriptConsoleMessageSent.connect(self.printConsoleMessage)

        self.m_defaultPageSettings['loadImages'] = args.load_images
        self.m_defaultPageSettings['loadPlugins'] = args.load_plugins
        self.m_defaultPageSettings['javascriptEnabled'] = True
        self.m_defaultPageSettings['XSSAuditingEnabled'] = False
        self.m_defaultPageSettings['userAgent'] = self.m_page.userAgent()
        self.m_defaultPageSettings['localToRemoteUrlAccessEnabled'] = args.local_to_remote_url_access
        self.m_page.applySettings(self.m_defaultPageSettings)

        self.libraryPath = os.path.dirname(os.path.abspath(self.m_scriptFile))

        # inject our properties and slots into javascript
        self.m_page.mainFrame().addToJavaScriptWindowObject('phantom', self)

        with QPyFile(':/bootstrap.js') as f:
            bootstrap = str(f.readAll())
        self.m_page.mainFrame().evaluateJavaScript(bootstrap)

        do_action('PhantomInitPost')
def check_proxy_enabled(host, port):
    """Check if the proxy is enabled."""
    port = int(port)
    if sys.platform.startswith("linux"):
        settings = gsettings.get_proxy_settings()
        enabled = len(settings) > 0
        if enabled:
            proxy = build_proxy(settings)
            QNetworkProxy.setApplicationProxy(proxy)
        else:
            logger.info("Proxy is disabled.")
        return enabled
    else:
        QNetworkProxyFactory.setUseSystemConfiguration(True)
        query = QNetworkProxyQuery(host, port)
        proxies = QNetworkProxyFactory.systemProxyForQuery(query)
        return len(proxies) and proxies[0].type() != QNetworkProxy.NoProxy
Exemplo n.º 20
0
 def setup_proxy(self):
     """Setup the proxy settings if needed."""
     # QtNetwork knows how to use the system settings on both Win and Mac
     if sys.platform.startswith("linux"):
         settings = gsettings.get_proxy_settings()
         enabled = len(settings) > 0
         if enabled and WebClient.proxy_instance is None:
             proxy = build_proxy(settings)
             self._set_proxy(proxy)
             WebClient.proxy_instance = proxy
         elif enabled and WebClient.proxy_instance:
             logger.info("Proxy already in use.")
         else:
             logger.info("Proxy is disabled.")
     else:
         if WebClient.proxy_instance is None:
             logger.info("Querying OS for proxy.")
             QNetworkProxyFactory.setUseSystemConfiguration(True)
Exemplo n.º 21
0
 def setup_proxy(self):
     """Setup the proxy settings if needed."""
     # QtNetwork knows how to use the system settings on both Win and Mac
     if sys.platform.startswith("linux"):
         settings = gsettings.get_proxy_settings()
         enabled = len(settings) > 0
         if enabled and WebClient.proxy_instance is None:
             proxy = build_proxy(settings)
             self._set_proxy(proxy)
             WebClient.proxy_instance = proxy
         elif enabled and WebClient.proxy_instance:
             logger.info("Proxy already in use.")
         else:
             logger.info("Proxy is disabled.")
     else:
         if WebClient.proxy_instance is None:
             logger.info("Querying OS for proxy.")
             QNetworkProxyFactory.setUseSystemConfiguration(True)
Exemplo n.º 22
0
    def get_proxy(self, url="http://www.agorabox.org"):
        try:
            from PyQt4.QtNetwork import QNetworkProxyQuery, QNetworkProxyFactory
            from PyQt4.QtCore import QUrl

            query = QNetworkProxyQuery(QUrl(url))
            proxies = QNetworkProxyFactory.systemProxyForQuery(query)
            if proxies and proxies[0].hostName():
                return str(proxies[0].hostName()), proxies[0].port()
        except:
            logging.debug("Could not detect proxies")
Exemplo n.º 23
0
 def _set_proxy(self, manager, server_url=None):
     proxy_settings = manager.get_proxy_settings()
     if proxy_settings.config == 'Manual':
         if proxy_settings.server and proxy_settings.port:
             proxy = QNetworkProxy(QNetworkProxy.HttpProxy, hostName=proxy_settings.server,
                                   port=int(proxy_settings.port))
             if proxy_settings.authenticated:
                 proxy.setPassword(proxy_settings.password)
                 proxy.setUser(proxy_settings.username)
             QNetworkProxy.setApplicationProxy(proxy)
     elif proxy_settings.config == 'System':
         QNetworkProxyFactory.setUseSystemConfiguration(True)
     elif proxy_settings.config == 'Automatic':
         proxy_settings = manager.get_proxies(server_url)
         protocol = server_url.split(":")[0]
         proxy_server_info = urllib2.urlparse.urlparse(proxy_settings[protocol])
         proxy = QNetworkProxy(QNetworkProxy.HttpProxy, hostName=proxy_server_info.hostname, 
                               port=proxy_server_info.port)
         QNetworkProxy.setApplicationProxy(proxy)
     else:
         QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.NoProxy))
Exemplo n.º 24
0
 def setup_proxy(self):
     """Setup the proxy settings if needed."""
     # QtNetwork knows how to use the system settings on both Win and Mac
     if sys.platform.startswith("linux"):
         settings = gsettings.get_proxy_settings()
         enabled = len(settings) > 0
         if enabled and WebClient.proxy_instance is None:
             proxy = build_proxy(settings)
             QNetworkProxy.setApplicationProxy(proxy)
             WebClient.proxy_instance = proxy
         elif enabled and WebClient.proxy_instance:
             logger.info("Proxy already in use.")
         else:
             logger.info("Proxy is disabled.")
     else:
         if WebClient.proxy_instance is None:
             logger.info("Querying OS for proxy.")
             query = QNetworkProxyQuery(QUrl(PROXY_REQUEST))
             proxies = QNetworkProxyFactory.systemProxyForQuery(query)
             QNetworkProxy.setApplicationProxy(proxies[0])
             WebClient.proxy_instance = proxies[0]
Exemplo n.º 25
0
 def initUI(self):
     self.centralWidget = QtGui.QWidget(self)
     '''
     Address Bar
     '''
     self.addbar = QtGui.QLineEdit(self)
     self.addbar.setGeometry(200, 16, 840, 35)
     self.addbar.setStyleSheet("font-size:21px")
     self.addbar.setFont(QtGui.QFont("Times New Roman"))
     self.addbar.returnPressed.connect(self.goClicked)
     self.addbar.cursorPositionAt(QtCore.QPoint(0, 0))
     self.addbar.setFocus()
     self.addbar.setSizePolicy(QtGui.QSizePolicy.MinimumExpanding, True)
     '''
     Progress Bar
     '''
     self.progressbar = QtGui.QProgressBar(self)
     self.progressbar.setMaximumWidth(100)
     '''
     Web Page Action setting
     '''
     self.web = QWebView(loadProgress=self.progressbar.setValue,
                         loadFinished=self.progressbar.hide,
                         loadStarted=self.progressbar.show,
                         titleChanged=self.setWindowTitle)
     self.web.setGeometry(300, 100, 1099, 768)
     self.web.urlChanged.connect(self.goUrlChanged)
     self.web.page().linkHovered.connect(self.LinkHovered)
     self.web.loadStarted.connect(self.pageLoadStarted)
     self.web.loadFinished.connect(self.pageLoadFinished)
     '''
     Back, Forward, Reload and Stop Button
     '''
     self.toolbar = QtGui.QToolBar(self)
     self.toolbar.addAction(self.web.pageAction(QWebPage.Back))
     self.toolbar.addAction(self.web.pageAction(QWebPage.Forward))
     self.toolbar.addAction(self.web.pageAction(QWebPage.Reload))
     self.toolbar.addAction(self.web.pageAction(QWebPage.Stop))
     '''
     Global Web Page Setting
     '''
     self.setting = QWebSettings.globalSettings()
     self.setting.setAttribute(QWebSettings.PluginsEnabled, True)
     self.setting.setAttribute(QWebSettings.AutoLoadImages, True)
     self.setting.setAttribute(QWebSettings.JavaEnabled, True)
     self.setting.setAttribute(QWebSettings.DnsPrefetchEnabled, True)
     self.setting.setAttribute(QWebSettings.WebGLEnabled, True)
     self.setting.setAttribute(QWebSettings.LocalStorageEnabled, True)
     self.setting.setAttribute(QWebSettings.JavascriptEnabled, True)
     self.setting.setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
     self.setting.setAttribute(
         QWebSettings.OfflineWebApplicationCacheEnabled, True)
     self.setting.setAttribute(QWebSettings.ZoomTextOnly, True)
     self.setting.setAttribute(QWebSettings.AcceleratedCompositingEnabled,
                               True)
     self.setting.setAttribute(QWebSettings.SpatialNavigationEnabled, True)
     self.setting.setAttribute(QWebSettings.LinksIncludedInFocusChain, True)
     self.setting.setAttribute(QWebSettings.LocalContentCanAccessFileUrls,
                               True)
     '''
     Main Window Setting
     '''
     self.setGeometry(300, 100, 1099, 768)
     self.setWindowIcon(QtGui.QIcon(""))
     self.setStyleSheet("background-color:")
     self.status = self.statusBar()
     self.status.setSizeGripEnabled(False)
     self.status.addPermanentWidget(self.progressbar)
     self.status.hide()
     self.setCentralWidget(self.centralWidget)
     grid = QtGui.QGridLayout()
     grid.addWidget(self.toolbar, 0, 0, 1, 1)
     grid.addWidget(self.addbar, 0, 1, 1, 1)
     grid.addWidget(self.web, 2, 0, 1, 6)
     self.centralWidget.setLayout(grid)
     '''
     Use system Proxy to load page
     '''
     QNetworkProxyFactory.setUseSystemConfiguration(True)
Exemplo n.º 26
0
    def __init__(self, args, parent=None):
        QObject.__init__(self, parent)

        # variable declarations
        self.m_loadStatus = self.m_state = ''
        self.m_var = self.m_paperSize = self.m_loadScript_cache = {}
        self.m_verbose = args.verbose
        self.m_page = WebPage(self)
        self.m_clipRect = QRect()
        # setup the values from args
        self.m_script = args.script.read()
        self.m_scriptFile = args.script.name
        self.m_scriptDir = os.path.dirname(args.script.name) + '/'
        self.m_args = args.script_args
        self.m_upload_file = args.upload_file
        autoLoadImages = False if args.load_images == 'no' else True
        pluginsEnabled = True if args.load_plugins == 'yes' else False

        args.script.close()

        do_action('PhantomInitPre', Bunch(locals()))

        palette = self.m_page.palette()
        palette.setBrush(QPalette.Base, Qt.transparent)
        self.m_page.setPalette(palette)

        if not args.proxy:
            QNetworkProxyFactory.setUseSystemConfiguration(True)
        else:
            proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0],
                                  int(args.proxy[1]))
            QNetworkProxy.setApplicationProxy(proxy)

        self.m_page.settings().setAttribute(QWebSettings.AutoLoadImages,
                                            autoLoadImages)
        self.m_page.settings().setAttribute(QWebSettings.PluginsEnabled,
                                            pluginsEnabled)
        self.m_page.settings().setAttribute(
            QWebSettings.FrameFlatteningEnabled, True)
        self.m_page.settings().setAttribute(
            QWebSettings.OfflineStorageDatabaseEnabled, True)
        self.m_page.settings().setAttribute(QWebSettings.LocalStorageEnabled,
                                            True)
        self.m_page.settings().setLocalStoragePath(
            QDesktopServices.storageLocation(QDesktopServices.DataLocation))
        self.m_page.settings().setOfflineStoragePath(
            QDesktopServices.storageLocation(QDesktopServices.DataLocation))

        # Ensure we have a document.body.
        self.m_page.mainFrame().setHtml('<html><body></body></html>')

        self.m_page.mainFrame().setScrollBarPolicy(Qt.Horizontal,
                                                   Qt.ScrollBarAlwaysOff)
        self.m_page.mainFrame().setScrollBarPolicy(Qt.Vertical,
                                                   Qt.ScrollBarAlwaysOff)

        m_netAccessMan = NetworkAccessManager(args.disk_cache,
                                              args.ignore_ssl_errors, self)
        self.m_page.setNetworkAccessManager(m_netAccessMan)

        # inject our properties and slots into javascript
        self.m_page.mainFrame().javaScriptWindowObjectCleared.connect(
            self.inject)
        self.m_page.loadFinished.connect(self.finish)

        do_action('PhantomInitPost', Bunch(locals()))
Exemplo n.º 27
0
    def initUI(self):
        self.centralWidget = QtGui.QWidget(self)

        '''
        Address Bar
        '''
        self.addbar = QtGui.QLineEdit(self)
        self.addbar.setGeometry(200, 16, 840, 35)
        self.addbar.setStyleSheet("font-size:21px")
        self.addbar.setFont(QtGui.QFont("Times New Roman"))
        self.addbar.returnPressed.connect(self.goClicked)
        self.addbar.cursorPositionAt(QtCore.QPoint(0, 0))
        self.addbar.setFocus()
        self.addbar.setSizePolicy(QtGui.QSizePolicy.MinimumExpanding, True)

        '''
        Progress Bar
        '''
        self.progressbar = QtGui.QProgressBar(self)
        self.progressbar.setMaximumWidth(100)

        '''
        Web Page Action setting
        '''
        self.web = QWebView(loadProgress=self.progressbar.setValue,
                            loadFinished=self.progressbar.hide, loadStarted=
                            self.progressbar.show, titleChanged=self.
                            setWindowTitle)
        self.web.setGeometry(300, 100, 1099, 768)
        self.web.urlChanged.connect(self.goUrlChanged)
        self.web.page().linkHovered.connect(self.LinkHovered)
        self.web.loadStarted.connect(self.pageLoadStarted)
        self.web.loadFinished.connect(self.pageLoadFinished)

        '''
        Back, Forward, Reload and Stop Button
        '''
        self.toolbar = QtGui.QToolBar(self)
        self.toolbar.addAction(self.web.pageAction(QWebPage.Back))
        self.toolbar.addAction(self.web.pageAction(QWebPage.Forward))
        self.toolbar.addAction(self.web.pageAction(QWebPage.Reload))
        self.toolbar.addAction(self.web.pageAction(QWebPage.Stop))

        '''
        Global Web Page Setting
        '''
        self.setting = QWebSettings.globalSettings()
        self.setting.setAttribute(QWebSettings.PluginsEnabled, True)
        self.setting.setAttribute(QWebSettings.AutoLoadImages, True)
        self.setting.setAttribute(QWebSettings.JavaEnabled, True)
        self.setting.setAttribute(QWebSettings.DnsPrefetchEnabled, True)
        self.setting.setAttribute(QWebSettings.WebGLEnabled, True)
        self.setting.setAttribute(QWebSettings.LocalStorageEnabled, True)
        self.setting.setAttribute(QWebSettings.JavascriptEnabled, True)
        self.setting.setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
        self.setting.setAttribute(QWebSettings.
                                  OfflineWebApplicationCacheEnabled, True)
        self.setting.setAttribute(QWebSettings.ZoomTextOnly, True)
        self.setting.setAttribute(QWebSettings.AcceleratedCompositingEnabled,
                                  True)
        self.setting.setAttribute(QWebSettings.SpatialNavigationEnabled, True)
        self.setting.setAttribute(QWebSettings.LinksIncludedInFocusChain, True)
        self.setting.setAttribute(QWebSettings.LocalContentCanAccessFileUrls,
                                  True)

        '''
        Main Window Setting
        '''
        self.setGeometry(300, 100, 1099, 768)
        self.setWindowIcon(QtGui.QIcon(""))
        self.setStyleSheet("background-color:")
        self.status = self.statusBar()
        self.status.setSizeGripEnabled(False)
        self.status.addPermanentWidget(self.progressbar)
        self.status.hide()
        self.setCentralWidget(self.centralWidget)
        grid = QtGui.QGridLayout()
        grid.addWidget(self.toolbar, 0, 0, 1, 1)
        grid.addWidget(self.addbar, 0, 1, 1, 1)
        grid.addWidget(self.web, 2, 0, 1, 6)
        self.centralWidget.setLayout(grid)

        '''
        Use system Proxy to load page
        '''
        QNetworkProxyFactory.setUseSystemConfiguration(True)
 def __init__(self):
     """
     Constructor
     """
     QNetworkProxyFactory.__init__(self)
Exemplo n.º 29
0

# TODO: лучше попробовать переписать на селениум, пример: https://github.com/gil9red/SimplePyScripts/blob/59322c5da8ce17ca5c68424b9db5fb82eda5e4dd/selenium__examples/screenshot.py

# TODO: сделать также PyQt5 вариант
# TODO: проверять поддерживаемые форматы по суффиксу file_name, если формат не поддерживается,
# кидать исключение с описание поддерживаемых параметров


from PyQt4.QtWebKit import QWebView, QWebPage
from PyQt4.QtGui import QApplication, QImage, QPainter
from PyQt4.QtCore import QEventLoop, QSize, QUrl
from PyQt4.QtNetwork import QNetworkProxyFactory

# Чтобы не было проблем запуска компов с прокси
QNetworkProxyFactory.setUseSystemConfiguration(True)


class WebPage(QWebPage):
    def userAgentForUrl(self, url):
        return 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0'


qApp = None


def url2image(url, file_name=None):
    """Function at the specified url downloads the page and stores it QImage object and returns it.
    If you pass file_name, then the function will save the picture in the file.

    Функция по указанному url загружает страницу и сохраняет ее объект QImage и возвращает его.