Esempio n. 1
0
def convert(args):
    profile = QWebEngineProfile()
    page = HeadlessPage(profile)

    settings = page.settings()
    settings.setAttribute(settings.JavascriptCanOpenWindows, False)
    settings.setAttribute(settings.WebGLEnabled, False)
    settings.setAttribute(settings.AutoLoadIconsForPage, False)
    settings.setAttribute(settings.ShowScrollBars, False)

    qurl = QUrl(args['url'])
    req = QWebEngineHttpRequest(qurl)

    for name, value in args.get('headers', ()):
        req.setHeader(name.encode('utf-8'), value.encode('utf-8'))

    store = page.profile().cookieStore()
    for name, value in args.get('cookies', ()):
        cookie = QNetworkCookie(name.encode('utf-8'), value.encode('utf-8'))
        cookie.setDomain(qurl.host())
        store.setCookie(cookie)

    with prepare_loop(page.loadFinished):
        page.load(req)

    for js in args.get('run_script', ()):
        with prepare_loop() as loop:
            page.runJavaScript(js, lambda _: loop.quit())

    if args['dest'] != '-':
        with prepare_loop(page.pdfPrintingFinished):
            page.printToPdf(os.path.abspath(args['dest']))
    else:
        sys.stdout.buffer.write(page.printToPdfAndReturn())
Esempio n. 2
0
 def _request(self, url, method='get', **kwargs):
     req = QWebEngineHttpRequest(QUrl(url))
     req.setMethod(QWebEngineHttpRequest.Post if method ==
                   'post' else QWebEngineHttpRequest.Get)
     if 'headers' in kwargs:
         req.setHeader(self._set_headers(kwargs.get('headers')))
     if 'body' in kwargs:
         req.setPostData(self._set_postdata(kwargs.get('body')))
     return req
Esempio n. 3
0
    def load(self, url):
        """Load the url and sets the request headers"""
        request = QWebEngineHttpRequest(QUrl(url))
        headers = self._get_headers()

        for h, v in headers.items():
            request.setHeader(bytearray(str(h), 'utf-8'),
                              bytearray(str(v), 'utf-8'))

        self.view.load(request)
Esempio n. 4
0
    def requests(self, payloads: str):
        for payload in payloads.splitlines():
            url = self.request.url.replace("[X]", payload)
            url = QUrl.fromUserInput(url)
            req = QWebEngineHttpRequest(url)
            req.setMethod(QWebEngineHttpRequest.Get if self.request.method ==
                          "GET" else QWebEngineHttpRequest.Post)
            for header in self.request.headers:
                req.setHeader(header[0].encode(), header[1].encode())

            if self.request.method == "POST" and self.request.post_data:
                req.setPostData(self.request.post_data.encode())

            yield req
Esempio n. 5
0
class WebViewWidget(QWebEngineView):
    def __init__(self):
        super().__init__()
        self.getReqSpecify()

    def getReqSpecify(self):
        print("start")
        auth = get_auth_header()

        baseUrl = 'http://118.67.130.33:8000/credit/payment/'  # dummy
        self.req = QWebEngineHttpRequest(url=QUrl(baseUrl))
        self.req.setHeader(QByteArray().append('AUTH'),
                           QByteArray().append(auth))  # dummy
        print(self.req)
        self.load(self.req)

    def printLoadStart(self):
        print("Start Loading")

    def printLoading(self):
        print("Loading")

    def printLoadFinished(self):
        print("Load Finished")

    def urlChangedFunction(self):
        self.setText(self.toString())
        print("Url Changed")

    def btnBackFunc(self):
        self.back()

    def btnForwardFunc(self):
        self.forward()

    def btnRelaodFunc(self):
        self.reload()

    def btnStopFunc(self):
        self.stop()