Beispiel #1
0
    def __init__(self, parent):
        super(DlgMPLogin, self).__init__(parent)

        self.resize(QtCore.QSize(365, 580))

        self.web = MPBrowser()
        self.verticalLayout = QtWidgets.QVBoxLayout(self)
        self.verticalLayout.setObjectName("verticalLayout")
        self.verticalLayout.addWidget(self.web)

        self.profile = QtWebEngineWidgets.QWebEngineProfile(
            'cookies', self.web)
        self.cookie_store = self.profile.cookieStore()

        self.cookie__RequestVerificationToken = None
        self.frmGetItemSellBuyInfo_token = None
        self.host_local = None
        self.cooks = {}

        self.cookie_store.cookieAdded.connect(self.onCookieAdded)
        #self.web.loadFinished.connect(self.web_loadFinished)

        page = suppressPage(self.profile, self.web)
        page.loadFinished.connect(self.web_loadFinished)
        self.page = page
        self.web.setPage(page)
        self.update_page = True
        self.price_updator = None
        self.this_connection = None
    def __init__(self, parent):
        super(DlgMPLogin, self).__init__(parent)

        self.resize(QtCore.QSize(365, 580))

        self.web = QtWebEngineWidgets.QWebEngineView()
        self.verticalLayout = QtWidgets.QVBoxLayout(self)
        #self.splitter = QSplitter(QtCore.Qt.Horizontal, self)
        self.verticalLayout.addWidget(self.web)

        self.verticalLayout.setObjectName("verticalLayout")
        #self.splitter.addWidget(self.web)
        #self.verticalLayout.addWidget(self.web)
        #self.web3 = MPBrowser()
        #self.splitter.addWidget(self.web3)
        #self.verticalLayout.addWidget(self.web3)

        #page.loadFinished.connect(self.web_loadFinished)

        #self.profile = self.page.profile()
        self.host_local = 'na-trade.naeu.playblackdesert.com'

        self.profile = QtWebEngineWidgets.QWebEngineProfile(
            'chrome-web-profile', self.web)
        #self.profile.clearAllVisitedLinks()
        #self.profile.clearHttpCache()
        #self.profile.cookieStore().deleteAllCookies()
        #self.profile.setHttpAcceptLanguage('en-US')
        #self.profile.setHttpCacheType(self.profile.NoCache)
        #self.interceptor = interceptor()
        #self.profile.setRequestInterceptor(self.interceptor)
        self.profile.setPersistentCookiesPolicy(
            QtWebEngineWidgets.QWebEngineProfile.NoPersistentCookies)
        self.profile.setHttpUserAgent(
            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
        )
        self.cookie_store = self.profile.cookieStore()

        self.cookie__RequestVerificationToken = None
        self.frmGetItemSellBuyInfo_token = None
        self.cooks = {}

        page = suppressPage(self.profile, self.web)
        self.page = page

        self.cookie_store.cookieAdded.connect(self.onCookieAdded)
        #self.web.loadFinished.connect(self.web_loadFinished)

        #self.page.settings().setAttribute(QWebEngineSettings.AllowRunningInsecureContent, True)
        #self.page.settings().setAttribute(QWebEngineSettings.PluginsEnabled, False)
        #self.page.settings().setAttribute(QWebEngineSettings.LocalContentCanAccessRemoteUrls, True)
        #self.page.settings().setAttribute(QWebEngineSettings.HyperlinkAuditingEnabled, True)
        self.web.setPage(page)
        self.update_page = True
        self.price_updator = None
        self.connection_pool = None
Beispiel #3
0
 def __init__(self):
     super(LoginWindow, self).__init__()
     self.setupUi(self)
     profile = QtWebEngineWidgets.QWebEngineProfile(self.webEngineView)
     webpage = QtWebEngineWidgets.QWebEnginePage(profile, self.webEngineView)
     self.webEngineView.setPage(webpage)
     self.cookie_store = profile.cookieStore()
     self.cookie_store.cookieAdded.connect(self.onCookieAdded)
     self.cookies = dict()
     self.resetWebview()
     self.webEngineView.load(QtCore.QUrl("https://www.yiban.cn/login"))
Beispiel #4
0
    def create_webprofile(self):
        """Create a webengineprofile to use in all views."""

        # create private/nonprivate webprofile per settings
        webprofile = (qtwe.QWebEngineProfile() if self.config.privacy_mode else
                      qtwe.QWebEngineProfile.defaultProfile())
        self.debug(
            f"Browser session is private: {webprofile.isOffTheRecord()}")

        # set the user agent string
        if self.config.user_agent:
            webprofile.setHttpUserAgent(self.config.user_agent)

        # use webprofile
        self.webprofile = webprofile
Beispiel #5
0
    def __getWebViewLayout(self):
        """WebViewを構成して返却"""

        vLayout = QtWidgets.QVBoxLayout()
        self.__webView = QtWebEngineWidgets.QWebEngineView()

        # UserAgentを変更する処理
        webProfile = QtWebEngineWidgets.QWebEngineProfile(self.__webView)
        webProfile.setHttpUserAgent(Const.webViewUA)
        webPage = QtWebEngineWidgets.QWebEnginePage(webProfile, self)
        self.__webView.setPage(webPage)

        self.__webView.setHtml(Const.welcomePage)
        vLayout.addWidget(self.__webView)

        return vLayout
Beispiel #6
0
    def create_webprofile(self):
        """Create a webengineprofile to use in all views."""

        # create private/nonprivate webprofile per settings
        webprofile = (
            qtwe.QWebEngineProfile()
            if self.config.get('privacy_mode')
            else qtwe.QWebEngineProfile.defaultProfile()
        )
        self.debug("Browser session is private: {}"
                   .format(webprofile.isOffTheRecord()))

        # set the user agent string
        if self.config.get('user_agent'):
            webprofile.setHttpUserAgent(self.config['user_agent'])

        # use webprofile
        self.webprofile = webprofile
Beispiel #7
0
 def __init__(self, window):
     super().__init__()
     
     # Automatically click HCaptcha checkbox
     # TODO: Add automatic hcaptcha solver userscript
     jsStr = """
     function isHidden(el) {
         return (el.offsetParent === null);
     };
     if (window.location.href.includes("checkbox")) {
     var checkboxInterval = setInterval(function() {
         if (!document.querySelector("#checkbox")) {
             // Wait until the checkbox element is visible
         } else if (document.querySelector("#checkbox").getAttribute("aria-checked") == "true") {
             clearInterval(checkboxInterval);
         } else if (!isHidden(document.querySelector("#checkbox")) && document.querySelector("#checkbox").getAttribute("aria-checked") == "false") {
             document.querySelector("#checkbox").click();
         } else {
             return;
         }
     }, 500);}"""
     hcaptchaClicker = QtWebEngineWidgets.QWebEngineScript()
     hcaptchaClicker.setName("qwebchannel.js"); 
     hcaptchaClicker.setInjectionPoint(QtWebEngineWidgets.QWebEngineScript.DocumentCreation) # important
     hcaptchaClicker.setRunsOnSubFrames(True)
     hcaptchaClicker.setWorldId(QtWebEngineWidgets.QWebEngineScript.MainWorld)
     hcaptchaClicker.setSourceCode(jsStr)
     
     self.profile = QtWebEngineWidgets.QWebEngineProfile()
     self.profile.setUrlRequestInterceptor(WebInterceptor(self, window))
     self.page = InstrumentedPage(self.profile, self)
     
     # inject js
     self.profile.scripts().insert(hcaptchaClicker)
     
     self.page.setUrl(QtCore.QUrl("https://shortlyai.com"))
     self.setPage(self.page)
Beispiel #8
0
    def __init__(self,
                 argsparsed,
                 currentdir,
                 form,
                 createPrivateProfile=True):
        global args
        args = argsparsed
        global dirname
        dirname = currentdir
        self.form = form

        #Create Empty (private) profile
        if (createPrivateProfile):
            logging.info("Create new private Profile")
            profile = QtWebEngineWidgets.QWebEngineProfile(self.form.web)
            QtWebEngineWidgets.QWebEnginePage.__init__(self, profile,
                                                       self.form.web)
            logging.info("Is profile in private mode:" +
                         str(profile.isOffTheRecord()))
        else:
            logging.info("Create no new Profile")
            QtWebEngineWidgets.QWebEnginePage.__init__(self)
            profile = self.profile()
            logging.info("Is profile in private mode:" +
                         str(profile.isOffTheRecord()))

        self.authenticationRequired.connect(self.webAuthenticationRequired)

        #Modify Profile
        #*********************************************************************

        # Do not persist Cookies - Should be Default
        profile.setPersistentCookiesPolicy(
            QWebEngineProfile.NoPersistentCookies)

        #Connect to Download Handler
        profile.downloadRequested.connect(self.on_downloadRequested)

        # Enable Spell Checking
        if (args.enableSpellcheck):
            self.profile().setSpellCheckEnabled(True)
            self.profile().setSpellCheckLanguages({args.spellCheckingLanguage})

        if (args.setBrowserLanguage):
            self.profile().setHttpAcceptLanguage(args.setBrowserLanguage)

        # When Autologin is enabled, se Opera User Agent is set. This is a Workaround for Citrix Storefront Webinterfaces which will otherwise show the Client detection which fails.
        if (args.enableAutoLogon or args.setCitrixUserAgent):
            if (args.setBrowserLanguage):
                self.profile().setHttpUserAgent(
                    "Mozilla/5.0 (Windows; U; Windows NT 6.1; de) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"
                )
            else:
                self.profile().setHttpUserAgent(
                    "Mozilla/5.0 (Windows; U; Windows NT 6.1; " +
                    args.setBrowserLanguage +
                    ") AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"
                )

        # Modify Settings
        # *********************************************************************

        #Allow Fullscreen
        self.settings().setAttribute(
            QWebEngineSettings.FullScreenSupportEnabled, True)

        if (args.allowDesktopSharing):
            self.settings().setAttribute(
                QWebEngineSettings.ScreenCaptureEnabled, True)

        if (args.enablepdfsupport):
            self.settings().setAttribute(
                QWebEngineSettings.LocalContentCanAccessRemoteUrls, 1)
            self.settings().setAttribute(
                QWebEngineSettings.LocalContentCanAccessFileUrls, 1)
    def __init__(self):
        """MainWindow constructor."""
        super().__init__()
        # Main UI code goes here
        # navigation toolbar
        navigation = self.addToolBar('Navigation')
        style = self.style()
        self.back = navigation.addAction('Back')
        self.back.setIcon(style.standardIcon(style.SP_ArrowBack))
        self.forward = navigation.addAction('Forward')
        self.forward.setIcon(style.standardIcon(style.SP_ArrowForward))
        self.reload = navigation.addAction('Reload')
        self.reload.setIcon(style.standardIcon(style.SP_BrowserReload))
        self.stop = navigation.addAction('Stop')
        self.stop.setIcon(style.standardIcon(style.SP_BrowserStop))
        self.urlbar = qtw.QLineEdit()
        navigation.addWidget(self.urlbar)
        self.go = navigation.addAction('Go')
        self.go.setIcon(style.standardIcon(style.SP_DialogOkButton))

        # single browser view
        #webview = qtwe.QWebEngineView()
        #self.setCentralWidget(webview)
        #webview.load(qtc.QUrl('http://www.alandmoore.com'))
        #self.go.triggered.connect(lambda: webview.load(
        #    qtc.QUrl(self.urlbar.text())))
        #self.back.triggered.connect(webview.back)
        #self.forward.triggered.connect(webview.forward)
        #self.reload.triggered.connect(webview.reload)
        #self.stop.triggered.connect(webview.stop)

        # browser tabs
        self.tabs = qtw.QTabWidget(
            tabsClosable=True, movable=True)
        self.tabs.tabCloseRequested.connect(self.tabs.removeTab)
        self.new = qtw.QPushButton('New')
        self.tabs.setCornerWidget(self.new)
        self.setCentralWidget(self.tabs)

        self.back.triggered.connect(self.on_back)
        self.forward.triggered.connect(self.on_forward)
        self.reload.triggered.connect(self.on_reload)
        self.stop.triggered.connect(self.on_stop)
        self.go.triggered.connect(self.on_go)
        self.urlbar.returnPressed.connect(self.on_go)
        self.new.clicked.connect(self.add_tab)

        # Profile sharing
        self.profile = qtwe.QWebEngineProfile()

        # History
        history_dock = qtw.QDockWidget('History')
        self.addDockWidget(qtc.Qt.RightDockWidgetArea, history_dock)
        self.history_list = qtw.QListWidget()
        history_dock.setWidget(self.history_list)
        self.tabs.currentChanged.connect(self.update_history)
        self.history_list.itemDoubleClicked.connect(self.navigate_history)

        # Altering Settings
        settings = qtwe.QWebEngineSettings.defaultSettings()
        settings.setFontFamily(
            qtwe.QWebEngineSettings.SansSerifFont, 'Impact')
        settings.setAttribute(
            qtwe.QWebEngineSettings.PluginsEnabled, True)


        # Text search feature
        find_dock = qtw.QDockWidget('Search')
        self.addDockWidget(qtc.Qt.BottomDockWidgetArea, find_dock)
        self.find_text = qtw.QLineEdit()
        find_dock.setWidget(self.find_text)
        self.find_text.textChanged.connect(self.text_search)
        # init javascript
        with open('finder.js', 'r') as fh:
            self.finder_js = fh.read()
        # using QWebEngineScript
        self.finder_script = qtwe.QWebEngineScript()
        self.finder_script.setSourceCode(self.finder_js)
        # Ensure that our created functions exist within the main JS environment
        self.finder_script.setWorldId(qtwe.QWebEngineScript.MainWorld)

        self.add_tab()
        # End main UI code
        self.show()