def checkDynamicContent(firstPage, secondPage): """ This function checks for the dynamic content in the provided pages """ if kb.nullConnection: debugMsg = "dynamic content checking skipped " debugMsg += "because NULL connection used" logger.debug(debugMsg) return if any(page is None for page in (firstPage, secondPage)): warnMsg = "can't check dynamic content " warnMsg += "because of lack of page content" logger.critical(warnMsg) return seqMatcher = getCurrentThreadData().seqMatcher seqMatcher.set_seq1(firstPage) seqMatcher.set_seq2(secondPage) # In case of an intolerable difference turn on dynamicity removal engine if seqMatcher.quick_ratio() <= UPPER_RATIO_BOUND: findDynamicContent(firstPage, secondPage) count = 0 while not Request.queryPage(): count += 1 if count > conf.retries: warnMsg = "target url is too dynamic. " warnMsg += "switching to --text-only. " logger.warn(warnMsg) conf.textOnly = True return warnMsg = "target url is heavily dynamic" warnMsg += ", sqlmap is going to retry the request" logger.critical(warnMsg) secondPage, _ = Request.queryPage(content=True) findDynamicContent(firstPage, secondPage) setDynamicMarkings(kb.dynamicMarkings)