def get_Ostate(self, s): """ 字母 =》'A' 数字 =》'N' 中文 =》'C' 特殊字符不变 :param s: :return: """ A = self.get_num('A') N = self.get_num("N") C = self.get_num("C") state = [] if not isinstance(s, str): s = decode(str(s)) if len(s) == 0: # 空字符串取0 state.append([0]) return state # s=str(s).decode("utf-8","ignore") for i in s: if i.encode("utf-8").isalpha(): state.append([A]) elif i.isdigit(): state.append([N]) elif is_chinese(i): state.append([C]) else: state.append([self.get_num(i)]) return state
def ex_json(post_data): post_data = json.loads(post_data) for p_name, p_value in post_data.items(): p_id = get_md5(self.host + self.path + decode(p_name) + self.method) p_state = self.get_Ostate(str(p_value)) p_type = "post" yield (p_id, p_state, p_type, p_name)
def ex_urlencoded(post_data): for p in post_data.split("&"): p_list = p.split("=") p_name = p_list[0] if len(p_list) > 1: p_value = reduce(operator.add, p_list[1:]) p_id = get_md5(self.host + self.path + decode(p_name) + self.method) p_state = self.get_Ostate(p_value) p_type = "post" yield (p_id, p_state, p_type, p_name)
def __init__(self, data): self.parameter = {} self.data = data url = str(data["uri"].encode("utf-8"), encoding="utf-8") self.uri = urllib.parse.unquote(url).strip() self.path = decode(get_path(self.uri)) self.payload = get_payload(self.uri).strip("?") self.host = urllib.parse.unquote(self.data["host"]).strip() self.method = urllib.parse.unquote(self.data["method"]).strip() self.content_type = self.data["content_type"] self.get_parameter()
def url(self): for p in self.payload.split("&"): p_list = p.split("=") p_name = p_list[0] if len(p_list) > 1: p_value = reduce(operator.add, p_list[1:]) p_id = get_md5(self.host + self.path + decode(p_name) + self.method) p_state = self.get_Ostate(p_value) p_type = "uri" yield (p_id, p_state, p_type, p_name)
def cookie(self): cookies = urllib.parse.unquote( str(self.data["cookie"].encode("utf-8"), encoding="utf-8")) for p in cookies.split("; "): if p.strip(): p_list = p.split("=") p_name = p_list[0] if len(p_list) > 1: p_value = reduce(operator.add, p_list[1:]) p_id = get_md5(self.host + self.path + decode(p_name) + self.method) p_state = self.get_Ostate(p_value) p_type = "cookie" yield (p_id, p_state, p_type, p_name)
def ex_xml(post_data): tree = ElementTree.fromstring(post_data) elements = [] p_names = [] def get_item(tree, parent_tag=""): if tree.getchildren(): if parent_tag: parent_tag += "/" + tree.tag else: parent_tag = tree.tag for t in tree.getchildren(): get_item(t, parent_tag) else: elements.append(tree.text) p_names.append(parent_tag + "/" + tree.tag) get_item(tree) for (p_name, p_value) in zip(p_names, elements): p_state = self.get_Ostate(p_value) p_type = "post" p_id = get_md5(self.host + self.path + decode(p_name) + self.method) yield (p_id, p_state, p_type, p_name)