示例#1
0
def request_callback(future, index, datas):
    result = future.result()
    if isinstance(result, BaseException):
        logger.log('TRACE', result.args)
        name = utils.get_classname(result)
        datas[index]['reason'] = name + ' ' + str(result)
        datas[index]['valid'] = 0
    elif isinstance(result, tuple):
        resp, text = result
        datas[index]['reason'] = resp.reason
        datas[index]['status'] = resp.status
        if resp.status == 400 or resp.status >= 500:
            datas[index]['valid'] = 0
        else:
            datas[index]['valid'] = 1
            headers = resp.headers
            banner = str({
                'Server': headers.get('Server'),
                'Via': headers.get('Via'),
                'X-Powered-By': headers.get('X-Powered-By')
            })
            datas[index]['banner'] = banner[1:-1]
            title = get_title(text).strip()
            datas[index]['title'] = utils.remove_string(title)
            datas[index]['header'] = str(dict(headers))[1:-1]
            datas[index]['response'] = utils.remove_string(text)
示例#2
0
def request_callback(future, index, datas):
    result = future.result()
    if isinstance(result, BaseException):
        logger.log('TRACE', result.args)
        name = utils.get_classname(result)
        datas[index]['reason'] = name + ' ' + str(result)
        datas[index]['request'] = 0
        datas[index]['alive'] = 0
    elif isinstance(result, tuple):
        resp, text = result
        datas[index]['reason'] = resp.reason
        datas[index]['status'] = resp.status
        if resp.status == 400 or resp.status >= 500:
            datas[index]['request'] = 0
            datas[index]['alive'] = 0
        else:
            datas[index]['request'] = 1
            datas[index]['alive'] = 1
            headers = resp.headers
            datas[index]['banner'] = utils.get_sample_banner(headers)
            datas[index]['header'] = str(dict(headers))[1:-1]
            if isinstance(text, str):
                title = get_title(text).strip()
                datas[index]['title'] = utils.remove_invalid_string(title)
                datas[index]['response'] = utils.remove_invalid_string(text)
示例#3
0
def request_callback(future, index, datas):
    resp, text = future.result()
    if isinstance(resp, BaseException):
        exception = resp
        logger.log('TRACE', exception.args)
        name = utils.get_classname(exception)
        datas[index]['reason'] = name + ' ' + str(exception)
        datas[index]['request'] = 0
        datas[index]['alive'] = 0
    else:
        datas[index]['reason'] = resp.reason
        datas[index]['status'] = resp.status
        datas[index]['request'] = 1
        if resp.status == 400 or resp.status >= 500:
            datas[index]['alive'] = 0
        else:
            datas[index]['alive'] = 1
        headers = resp.headers
        if settings.enable_banner_identify:
            datas[index]['banner'] = utils.get_sample_banner(headers)
        datas[index]['header'] = json.dumps(dict(headers))
        history = resp.history
        datas[index]['history'] = json.dumps(get_jump_urls(history))
        if isinstance(text, str):
            title = get_title(text).strip()
            datas[index]['title'] = utils.remove_invalid_string(title)
            datas[index]['response'] = utils.remove_invalid_string(text)
示例#4
0
def resolve_callback(future, index, datas):
    """
    解析结果回调处理

    :param future: future对象
    :param index: 下标
    :param datas: 结果集
    """
    hostname, answer = future.result()
    if isinstance(answer, BaseException):
        logger.log('TRACE', answer.args)
        name = utils.get_classname(answer)
        datas[index]['reason'] = name + ' ' + str(answer)
        datas[index]['valid'] = 0
    elif isinstance(answer, tuple):
        ips = answer[2]
        datas[index]['ips'] = str(ips)[1:-1]
示例#5
0
def request_callback(future, index, datas):
    resp, text = future.result()
    if isinstance(resp, BaseException):
        exception = resp
        logger.log('TRACE', exception.args)
        name = utils.get_classname(exception)
        datas[index]['reason'] = name + ' ' + str(exception)
        datas[index]['request'] = 0
        datas[index]['alive'] = 0
    else:
        datas[index]['reason'] = resp.reason
        datas[index]['status'] = resp.status
        datas[index]['request'] = 1
        if resp.status == 400 or resp.status >= 500:
            datas[index]['alive'] = 0
        else:
            datas[index]['alive'] = 1
        headers = resp.headers
        # datas[index]['banner'] = utils.get_sample_banner(headers) 采用webanalyzer的指纹识别 原banner识别弃用
        datas[index]['header'] = json.dumps(dict(headers))
        if isinstance(text, str):
            title = get_title(text).strip()
            datas[index]['title'] = utils.remove_invalid_string(title)
            datas[index]['response'] = utils.remove_invalid_string(text)