Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QtWebEngine
  4. QWebEngine isn't loading one site
Forum Updated to NodeBB v4.3 + New Features

QWebEngine isn't loading one site

Scheduled Pinned Locked Moved Unsolved QtWebEngine
1 Posts 1 Posters 585 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Z Offline
    Z Offline
    zollex69
    wrote on last edited by zollex69
    #1

    Hi,
    First of all, this is my first post here. Hopefully it's in the right category.
    While building my browser for training purposes, I came across a problem which is that there are sites that don't load, such as bet365.com, that is, after loading the page (successful or not, I don't know) QWebEngineView remains white, no content appears, but other sites such as google.com or youtube.com load and have content displayed.

    Screenshot of white window:
    ee51b7ac-eb41-4d62-8c80-75a3ff6b9df6-image.png

    I don't get any errors during code execution.

    The version of PyQt5 is 5.15.4

    I also tried opening bet365.com in the browser that is presented in the Qt example, which uses PySide2, but here too, unfortunately, I got a failure.

    Here is the browser code

    class MyWebEngineUrlRequestInterceptor(QWebEngineUrlRequestInterceptor):
        def __init__(self, parent=None):
            super().__init__(parent)
    
        def interceptRequest(self, info):
            print("interceptRequest")
            print(info.requestUrl())
    
    class MyWebEnginePage(QWebEnginePage):
    
        def acceptNavigationRequest(self, url, _type, isMainFrame):
            print("acceptNavigationRequest")
            print(url)
            return QWebEnginePage.acceptNavigationRequest(self, url, _type, isMainFrame)
    
         def certificateError(self, certificateError):
           print(certificateError.errorDescription(), certificateError.url(), certificateError.isOverridable())
           error = certificateError.error()
    
           return super(MyWebEnginePage, self).certificateError(certificateError)    
    
    class Browser(QMainWindow):
        proxy_type = QNetworkProxy.HttpProxy
        proxy_hostname = 'proxy_hostname'
        proxy_port = 64777
        proxy_username = 'proxy_username'
        proxy_password = 'proxy_username'
    
        def __init__(self, url):
            super().__init__()
            self.searching_url = url
            self.set_auth_proxy()
            self.webEngineView = QWebEngineView()
    
            self.setMinimumSize(1200, 600)
            self.setCentralWidget(self.webEngineView)
    
            interceptor = MyWebEngineUrlRequestInterceptor()
    
            profile = QWebEngineProfile('storage', self.webEngineView)
    
            profile.setRequestInterceptor(interceptor)
    
            url = QUrl(self.searching_url)
            url.setScheme("http")
            url.setHost("www.bet365.com")
            httpReq = QWebEngineHttpRequest()
            httpReq.setUrl(url)
            httpReq.setMethod(QWebEngineHttpRequest.Get)
            httpReq.setHeader(QByteArray(b'Accept'), QByteArray(b'*/*'))
            
            httpReq.setHeader(QByteArray(b'Content-Type'), QByteArray(b'application/json'))
            httpReq.setHeader(QByteArray(b'User-Agent'), QByteArray(b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'))
    
            print(httpReq.header(QByteArray(b'Host')))
    
            page = MyWebEnginePage(profile, self.webEngineView)
            self.webEngineView.setPage(page)
    
            self.show()
            self.webEngineView.load(httpReq)
    
        def set_auth_proxy(self):
            self.auth_proxy = QNetworkProxy()
            self.auth_proxy.setType(self.proxy_type)
            self.auth_proxy.setHostName(self.proxy_hostname)
            self.auth_proxy.setPort(self.proxy_port)
            self.auth_proxy.setUser(self.proxy_username)
            self.auth_proxy.setPassword(self.proxy_password)
            self.auth_proxy.setApplicationProxy(self.auth_proxy)
    
    
    
    if __name__ == '__main__':
        bet365 = 'https://www.bet365.com'    
        postman = 'http://postman-echo.com/get'
    
        app = QApplication(sys.argv)
        browser = Browser(bet365)
        sys.exit(app.exec_())
    

    Also when I set the Host header like this httpReq.setHeader(QByteArray(b'Host'), QByteArray(b'www.bet365.com')), there is an error with the code ERR_INVALID_ARGUMENT in browser, I thought it was still about the headers when requesting, but no, I have set different headers and no luck.

    What can I do to get bet365 to answer me correctly?

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved