def __init__(self, data, parent): self.status = "ok" self.requests = [] self.cookies = [] self.redirect = None # if True the probe returned no error BUT the json is not closed properly self.partialcontent = False self.html = None self.user_output = [] self.page_hash = 0 status = data.pop() if status['status'] == "error": self.status = "error" self.errcode = status['code'] if "partialcontent" in status: self.partialcontent = status['partialcontent'] # grap cookies before creating rquests for key, val in data: if key == "cookies": for cookie in val: self.cookies.append(Cookie(cookie, parent.url)) if "redirect" in status: self.redirect = status['redirect'] r = Request(REQTYPE_REDIRECT, "GET", self.redirect, parent=parent, set_cookie=self.cookies, parent_db_id=parent.db_id) self.requests.append(r) for key, val in data: if key == "request": trigger = val['trigger'] if 'trigger' in val else None #try: r = Request(val['type'], val['method'], val['url'], parent=parent, set_cookie=self.cookies, data=val['data'], trigger=trigger, parent_db_id=parent.db_id) self.requests.append(r) #except Exception as e: # pass elif key == "html": self.html = val elif key == "page_hash": page_hash = TextHash(val).hash self.page_hash = page_hash if page_hash else 0 elif key == "user": self.user_output.append(val)
def request_is_duplicated(self, page_hash): for h in self.page_hashes: if TextHash.compare(page_hash, h): return True return False