def paramsCombination(self, data: dict, place=PLACE.GET, payloads=[], hint=POST_HINT.NORMAL, urlsafe='/\\'): """ 组合dict参数,将相关类型参数组合成requests认识的,防止request将参数进行url转义 :param data: :param hint: :return: payloads -> list """ result = [] if place == PLACE.POST: if hint == POST_HINT.NORMAL: for key, value in data.items(): new_data = copy.deepcopy(data) for payload in payloads: new_data[key] = payload result.append((key, value, payload, new_data)) elif hint == POST_HINT.JSON: for payload in payloads: for new_data in updateJsonObjectFromStr(data, payload): result.append(('', '', payload, new_data)) elif place == PLACE.GET: for payload in payloads: for key in data.keys(): temp = "" for k, v in data.items(): if k == key: temp += "{}={}{}".format( k, quote(payload, safe=urlsafe), DEFAULT_GET_POST_DELIMITER) else: temp += "{}={}{}".format( k, quote(v, safe=urlsafe), DEFAULT_GET_POST_DELIMITER) temp = temp.rstrip(DEFAULT_GET_POST_DELIMITER) result.append((key, data[key], payload, temp)) elif place == PLACE.COOKIE: for payload in payloads: for key in data.keys(): temp = "" for k, v in data.items(): if k == key: temp += "{}={}{}".format( k, quote(payload, safe=urlsafe), DEFAULT_COOKIE_DELIMITER) else: temp += "{}={}{}".format(k, quote(v, safe=urlsafe), DEFAULT_COOKIE_DELIMITER) result.append((key, data[key], payload, temp)) elif place == PLACE.URI: uris = splitUrlPath(data, flag="<--flag-->") for payload in payloads: for uri in uris: uri = uri.replace("<--flag-->", payload) result.append(("", "", payload, uri)) return result
def paramsCombination(self, data: dict, place=PLACE.GET, payloads=[], hint=POST_HINT.NORMAL, urlsafe='/\\'): """ 组合dict参数,将相关类型参数组合成requests认识的,防止request将参数进行url转义 :param data: :param hint: :return: payloads -> list """ result = [] if place == PLACE.POST: if hint == POST_HINT.NORMAL: for key, value in data.items(): if ("." in value or "/" in value) or (key.lower() in ['filename', 'file', 'path', 'filepath']): new_data = copy.deepcopy(data) for payload in payloads: new_data[key] = payload result.append((key, value, payload, new_data)) elif hint == POST_HINT.JSON: for payload in payloads: for new_data in updateJsonObjectFromStr(data, payload): result.append(('', '', payload, new_data)) elif place == PLACE.GET: for payload in payloads: for key in data.keys(): value = data[key] if ("." in value or "/" in value) or (key.lower() in ['filename', 'file', 'path', 'filepath']): temp = "" for k, v in data.items(): if k == key: temp += "{}={}{}".format(k, quote(payload, safe=urlsafe), DEFAULT_GET_POST_DELIMITER) else: temp += "{}={}{}".format(k, quote(v, safe=urlsafe), DEFAULT_GET_POST_DELIMITER) temp = temp.rstrip(DEFAULT_GET_POST_DELIMITER) result.append((key, data[key], payload, temp)) elif place == PLACE.COOKIE: for payload in payloads: for key in data.keys(): value = data[key] if ("." in value or "/" in value) or (key.lower() in ['filename', 'file', 'path', 'filepath']): temp = "" for k, v in data.items(): if k == key: temp += "{}={}{}".format(k, quote(payload, safe=urlsafe), DEFAULT_COOKIE_DELIMITER) else: temp += "{}={}{}".format(k, quote(v, safe=urlsafe), DEFAULT_COOKIE_DELIMITER) result.append((key, data[key], payload, temp)) return result
'method': 'update', 'data': [{ 'userId': 'test123', 'version': '1', 'firstName': 'test123', 'lastName': 'test123', 'email': '*****@*****.**', 'status': 'active', 'roles': ['aaaa'] }], 'type': 'rpc', 'tid': 10 } duoceng_obj = { "aaa": [{ "username": "", "password": "" }, { "a2": "", "a3": ["a", "b", "c"] }] } update_str = 'update_aaaaaaa' for tmp in updateJsonObjectFromStr(duoceng_obj, update_str): print(tmp)