예제 #1
0
class MyBrowser:
    global result
    global DEBUG
    global DOMXSSTAG
    global XSSSIGN

    def __init__(self):

        self.debug = DEBUG
        self.xsssign = XSSSIGN
        self.tagsign = DOMXSSTAG
        #一些全局的东西
        self.headers = {'User-Agent' : 'Mozilla/5.0 (MSIE 9.0; Windows NT 6.1; Trident/5.0)'}
        self.timeout = 3
        #记录respones的数据
        self._load_status = None
        self.http_code = None
        #初始化webkit
        self.application = QApplication([])

    def load_url(self, url='', method='get', body='', headers={}):
        self.webpage = QWebPage()
        self.webframe = self.webpage.currentFrame()
        #document = self.webframe.documentElement().tagName()
        #print '--------------'
        #print self.webframe.documentElement().findFirstElement('script').tagName ()
        #重写alert confirm事件
        self.webpage.javaScriptAlert = self._on_javascript_alert
        self.webpage.javaScriptConfirm = self._on_javascript_confirm
        self.webpage.javaScriptConsoleMessage = self._on_javascript_consolemessage
        self.netmanager = self.webpage.networkAccessManager()
        #绑定事件
        self.netmanager.finished.connect(self._request_ended)
        self.webpage.loadFinished.connect(self._on_load_finished)
        self.webpage.loadStarted.connect(self._on_load_started)

        try:
            method = getattr(QNetworkAccessManager, "%sOperation" % method.capitalize())
        except AttributeError, e:
            if self.debug:
                my_print("[-] Error: %s" % str(e), 'yellow')

        request = QNetworkRequest(QUrl(url))
        if headers == {}:
            headers = self.headers
        for header in headers:
            request.setRawHeader(header, headers[header])

        self.webframe.load(request, method, body)
        self.wait_for()