API | 地址 | 参数 | 参数是否必须 | 说明 | 用例 |
---|---|---|---|---|---|
时间戳 | api://util/timestamp | ts,form,dt |
否 | 默认返回当前时间戳和时间 如果参数带时间戳ts, 返回ts所对应时间; 如果参数带时间格式form,返回相应格式的本机和北京时间,默认"form=%Y-%m-%d %H:%M:%S" 如果参数带时间字符串 dt, 返回 dt 对应的时间信息, dt 优先级大于 ts, 指定 dt 须同时指定 form |
|
Unicode转中文 | api://util/unicode | html_unescape,content | 是 | html_unescape: 是否进行 html 反转义, 默认为 False, 启用该参数需对 content 进行 urlencode 编码 content: 要转码的内容 |
|
Url转中文 | api://util/urldecode | unquote_plus,encoding,content | 是 | unquote_plus: 是否将加号(+)解码为空格( ), 默认为 False, 仅在 encoding 为 utf-8 时生效. encoding: 指定编码, 默认为 utf-8 content:要转码的 urlencoded 内容, 如果 content 为非 utf-8 编码的 urlencoded 字符串, 请再次进行 urlencode 编码后再传入 |
|
正则表达式 | api://util/regex | data,p | 是 | data: 原始数据 p: 正则表达式 |
|
字符串替换 | api://util/string/replace | p,s,t | 是 | p: 正则表达式 s: 要替换的字符串 t: 要替换的内容 |
|
延时 | api://util/delay | seconds | 是 | seconds:延时指定时间 大于30s均视为延时30.0s |
|
RSA加密/解密 | api://util/rsa | key, data f |
是 | key:RSA私钥,Get方式请删除换行符 data:要加密或解密的数据 f:encode为加密,decode为解密 |
|
HTTP/HTTPs /Socks5代理 |
scheme://username:password@ hostname:port |
scheme, username, password, hostname, port |
是(username, password除外) | scheme:协议头,可选输入http, https,socks5 username:代理账户名,如无账户验证请删除'username:password@'部分 password:代理账户密码 hostname:可选输入IPv4地址,IPv6地址,域名 port:端口号,如端口号为80或443可删除':port'部分 |
|
GB2312编码 | api://util/gb2312 | content | 是 | content: 要转码的内容 | |
OCR识别 | api://util/dddd/ocr | img或imgurl, old | 是 | img: 要识别的Base64图片内容 imgurl: 要识别的web图片Url地址 old: 是否采用旧模型, 默认为False extra_onnx_name: 自定义Onnx文件名, 默认为空 |
|
目标检测 | api://util/dddd/det | img或imgurl | 是 | img: 要检测的Base64图片内容 imgurl: 要检测的web图片Url地址 |
|
滑块识别 | api://util/dddd/slide | imgtarget, imgbg, simple_target, comparison |
是 | imgtarget: 小滑块的Base64或url图片内容 imgbg: 背景图片的Base64或url图片内容(推荐使用 Post 方式) simple_target: 小滑块图片是否包含过多背景, 默认为False comparison: imgtarget是否不为小滑块, True表示为带坑位原图, False表示为小滑块, 默认为False |
参数/过滤器 | 说明 | 用例 | 参考值 |
---|---|---|---|
{{_proxy}} | 代理, 用于HAR模板单个请求的测试. 格式: scheme://username:password@hostname:port 支持HTTP/HTTPs/Socks5代理 |
\ | \ |
{{__log__}} | 日志, 用于单个模板任务的日志记录和输出. 支持多行日志, 用'\r\n'分隔 |
\ | \ |
{{int(value, default=0, base=10)}} | 将 value 转为整数, base: 进制, 默认为10 default: 转换失败时的默认值, 默认为0 |
{{int("123", base=10)}} | 123 |
{{float(value, default=0)}} | 将 value 转为浮点数, default: 转换失败时的默认值, 默认为0 |
{{float("123.456")}} | 123.456 |
{{bool(value)}} | 将 value 转为布尔值, value 为("yes", "on", "1", "true", 1)时为True, 不区分大小写 |
{{bool("Yes")}} | True |
{{utf8(value)}} | 当 value 为字符串时, 将其转为 utf-8 编码的字节流 | {{utf8("你好")}} | b'\xe4\xbd\xa0\xe5\xa5\xbd' |
{{unicode(value, html_unescape=False)}} | 将字符串 value 由 Unicode 转为中文, html_unescape: 是否对 value 进行 html 反转义, 默认为 False 注意: 当 value 不为字符串类型时, 先尝试对其进行 utf-8 解码, 解码失败则对其进行 str() 转换. 可用于转换字节流为字符串 |
{{unicode("\u4f60\u597d")}} | 你好 |
{{quote_chinese(value, sep="", encoding="utf-8", decoding="utf-8")}} | 将 value 中所有 ord()>=128 的字节用 urlencode 表示 (注意和 urlencode 有区别), sep: 分隔符, 默认为"", if encoding: 编码, 默认为 utf-8, decoding: 解码, 默认为 utf-8 |
{{quote_chinese("123中文QAQ&/:")}} | 123%E4%B8%AD%E6%96%87QAQ&/: |
urlencode(value,encoding="utf-8", for_qs=False) | 将 value 字符串进行url编码, encoding: 编码, 默认为 utf-8, for_qs: 是否将斜杠 / 编码为 %2F, 将 %20 替换为 +, 默认为 False |
{{ urlencode("http://www.baidu.com?name=张三&age=18 ") }} | http%3A//www.baidu.com%3Fname%3D%E5%BC%A0%E4%B8%89%26age%3D18%20 |
b2a_hex(data[, sep[, bytes_per_sep=1]]) | 将字节流 data 转为十六进制表示, sep: 分隔符, 默认为空 bytes_per_sep: 每隔多少个字节添加一个分隔符, 默认为1 |
{{unicode(b2a_hex(utf8('1234567890abcdef'), sep=' ', bytes_per_sep=2))}} | 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 |
a2b_hex(hexstr) | 将十六进制 ASCII 字符串表示的 hexstr 转为字节流 | {{unicode(a2b_hex('31323334353637383930616263646566'))}} | 1234567890abcdef |
b2a_uu(data, *, backtick=False) | 将字节流 data 转为 uu 编码, backtick: 是否使用反引号表示 0, 默认为False, 即使用空格表示 0 注意: data 的长度最多为45, 返回值包含换行符 |
{{unicode(b2a_uu(utf8('1234567890abcdef'), backtick=True))}} | '0,3(S-#4V-S@Y,&%B8V1E9@``\n' |
a2b_uu(data) | 将单行 uu 编码的字符串 data 转为字节流 | {{unicode(a2b_uu('0,3(S-#4V-S@Y,&%B8V1E9@``'))}} | 1234567890abcdef |
b2a_base64(data, *, newline=True) | 将字节流 data 转为 base64 编码, newline: 是否添加换行符, 默认为True |
{{unicode(b2a_base64(utf8('1234567890abcdef'), newline=False))}} | MTIzNDU2Nzg5MGFiY2RlZg== |
a2b_base64(data) | 将 base64 编码的字符串 data 转为字节流 | {{unicode(a2b_base64('MTIzNDU2Nzg5MGFiY2RlZg=='))}} | 1234567890abcdef |
b2a_qp(data, *, quotetabs=False, istext=True, header=False) | 将字节流 data 转为带引号的可打印编码, quotetabs: 是否对制表符和空格进行编码, 默认为False istext: 是否不对换行符进行编码, 默认为True header: 是否将空格编码为下划线, 默认为False |
{{unicode(b2a_qp(utf8('1234567890abcdef \n123'), quotetabs=True, istext=False, header=True))}} | 1234567890abcdef=20=0A123 |
a2b_qp(data, *, header=False) | 将带引号的可打印编码 data 转为字节流, header: 是否将下划线解码为空格, 默认为False |
{{unicode(a2b_qp('1234567890abcdef=20=0A123', header=True))}} | 1234567890abcdef \n123 |
crc_hqx(data, value) | 计算字节流 data 的 CRC 校验值, value: 初始 CRC |
{{crc_hqx(utf8('1234567890abcdef'), 0)}} | 62028 |
crc32(data[, value]) | 计算字节流 data 的 CRC 校验值, value: 初始 CRC, 默认为0 |
{{crc32(utf8('1234567890abcdef'), 0)}} | 1554196281 |
{{format(value, format_spec="")}} | 格式化输出, value: 要格式化的值, format_spec: 格式化字符串, 默认为空, 详见: format-specification-mini-language |
{{format(123.456, "0.2f")}} | 123.46 |
{{b64encode(value, encoding="utf-8")}} | 计算 value 的 base64 编码值, encoding: 编码, 默认为 utf-8 |
{{b64encode("hello")}} | aGVsbG8= |
{{b64decode(value, encoding="utf-8")}} | 计算 value 的 base64 解码值, encoding: 编码, 默认为 utf-8 |
{{b64decode("aGVsbG8=")}} | hello |
{{to_uuid(value, namespace='6ba7b811-9dad-11d1-80b4-00c04fd430c8')}} | 计算 value 的 uuid5 生成值; namespace: uuid所使用的命名空间, 默认为: 6ba7b811-9dad-11d1-80b4-00c04fd430c8 |
{{to_uuid("hello")}} | 074171de-bc84-5ea4-b636-1135477620e1 |
{{md5(value)}} | 计算 value 的 md5 值 | {{md5("123")}} | 202cb962ac59075b964b07152d234b70 |
{{sha1(value)}} | 计算 value 的 sha1 值 | {{sha1("123")}} | 40bd001563085fc35165329ea1ff5c5ecbdbbeef |
{{password_hash(password, hashtype, salt=salt, salt_size=salt_size, rounds=rounds, ident=ident)}} | 计算 password 的 加密hash 值; hashtype: Hash 类型 ("md5", "sha256", "sha512", "blowfish"), 默认为 sha512 salt: password 盐值 salt_size: password 盐值尺寸 rounds: password hash迭代次数 ident: blowfish 算法版本, 默认为 2b |
{{password_hash("hello")}} | $6$rounds=656000$KSQu5IKoWLdHDYqJ$W.MQWC3LsuzRsQ35.07h48Mr3TMJ9Cjj0du.5mGEW2yOFkQlxi/ySwwG5Z4SKVewpWn8PFPZLUuTrAwcV0ke0. |
{{hash(value,hashtype)}} | 计算 value 的 hash 值; hashtype: Hash 类型, 默认为 sha1 |
{{hash("123","sha256")}} | a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3 |
{{aes_encrypt(word, key, mode, iv, output_format='base64', padding=True, padding_style='pkcs7')}} | 计算 word 的 AES 加密值; word: 待加密文本 key: 密钥, 长度应为16, 24或32 mode: 加密模式, ("ECB","CBC","CFB","OFB","CTR","GCM") iv: 初始化向量, 长度为16 output_format: 输出格式, 默认为 base64 padding: 是否使用填充, 默认为 True padding_style: 填充方式, 默认为 pkcs7 |
{{aes_encrypt("hello", "1234567890123456", "ECB", "1234567890123456", "hex")}} | ebb7c703e675db3da397038b4c17823c |
{{aes_decrypt(word, key, mode, iv, input_format='base64', padding=True, padding_style='pkcs7')}} | 计算 word 的 AES 解密值; word: 待解密文本 key: 密钥, 长度应为16, 24或32 mode: 加密模式, ("ECB","CBC","CFB","OFB","CTR","GCM") iv: 初始化向量, 长度为16 input_format: 输入格式, 默认为 base64 padding: 是否使用填充, 默认为 True padding_style: 填充方式, 默认为 pkcs7 |
{{aes_decrypt("ebb7c703e675db3da397038b4c17823c", "1234567890123456", "ECB", "1234567890123456", "hex")}} | hello |
{{timestamp(type)}} | 调用 time.time() 函数, 获取时间戳 type: 'int'表示输出整数, 'float'表示输出小数, 默认为'int' |
{{timestamp('float')}} | 1599990277.4615508 |
{{date_time(date,time,diff)}} | date: 0/1表示是否显示日期, 默认为 1; time: 0/1表示是否显示时分秒, 默认为 1; diff: 时间差, 单位为h, 默认为 0 |
{{date_time(0,1,10)}}(在 18:06 测试) | 04:06:21 |
{{is_num(value)}} | 判断 value 是否为数字 不支持科学计数 |
{{is_num('0.5')}} | True |
{{add(*args)}} | 对多个数据进行求和运算 | {{add(3,2)}} | 5.0 |
{{sub(*args)}} | 对多个数据进行减法运算 | {{sub(3,2)}} | 1.0 |
{{multiply(*args)}} | 对多个数据进行乘法运算 | {{multiply(3,2)}} | 6.0 |
{{divide(*args)}} | 对多个数据进行除法运算 | {{divide(3,2)}} | 1.5 |
{{Faker(locale="zh_CN").function()}} | 调用python包faker里的Faker类来创建伪数据, locale为生成数据的文化选项, 需同时调用其提供的方法, 如name(), Docs: https://faker.readthedocs.io/ |
{{Faker(locale='zh_CN').name()}} | 苗桂芝 |
{{regex_replace(value, pattern, replacement, count, ignorecase, multiline)}} | 匹配替换为指定文本, re.sub 方法实现; value: 要被查找替换的原始字符串, pattern: 正则中的模式字符串 replacement: 匹配后替换字符串 count: 替换次数, 默认为 0 (全部替换) ignorecase: 忽略大小写, 默认为 False multiline: 多行匹配, 默认为 False |
{{regex_replace("账号: 123456789A!", "[a-z|0-5]", "*", 0, True, False)}} | 账号: *****6789*! |
{{regex_findall(value, pattern, ignorecase, multiline)}} | 匹配文本并返回列表形式的字符串, re.findall 方法实现; value: 要被查找的原始字符串, pattern: 正则中的模式字符串 ignorecase: 忽略大小写, 默认为 False multiline: 多行匹配, 默认为 False |
{{regex_findall("账号: 123456789A!", "[a-z|0-5]", True, False)}} | ['1', '2', '3', '4', '5', 'A'] |
{{regex_search(value, pattern, *args, **kwargs)}} | 匹配文本并返回列表形式的字符串, re.search 方法实现; value: 要被查找的原始字符串, pattern: 正则中的模式字符串 *args: 形如 "\\1", "\\g" **kwargs: 形如 ignorecase=True, multiline=False |
{{regex_search("账号: 123456789A!", "账号: ([0-5])([0-5]+).*([a-z]+)", "\\2", "\\3", ignorecase=True)}} | ['2345', 'A'] |
{{regex_escape(value, re_type)}} | 转义 value正则表达式 中的特殊字符, re.escape 方法实现; value: 要被转义的原始正则表达式, re_type: 转义类型("python", "posix_basic") 默认为 python |
{{regex_escape("^f.*o(.*)$")}} | \\^f\\.\\*o\\(\\.\\*\\)\\$ |
{{ternary(value, true_val, false_val, none_val)}} | 为 True/False/None 定义不同的值; value: 原始表达式/原始布尔值 或 原始变量, true_val: 当 value为True 时返回该值 false_val: 当 value为False 时返回该值 none_val: 当 value为None或未定义 时返回该值, 默认为 None |
{{ternary(variable == "needs_restart", "restart", "continue") }} | continue |
{{random(min, max, unit)}} | 随机生成从 min 到 max 的 unit 位小数 | {{random(0,10,4)}} | 0.8696 |
{{shuffle(mylist, seed=None)}} | 随机打乱列表 mylist, seed 为随机种子 | {{shuffle([1,2,3,4,5,6,7,8,9,10])}} | [2, 1, 3, 4, 5, 6, 7, 8, 9, 10] |
{{type_debug(value)}} | 返回 value 的类型名, 用于调试 | {{type_debug(unicode(""))}} | str |
{% for variable in variables %} | 开始一个 for 循环 | \ | \ |
{% endfor %} | 结束 for 循环 | \ | \ |
{% for value in range(start, stop, step) %} | 开始一个基于 range 的 for 循环, range() 为 Python 函数 start: 开始值, 默认为 0 stop: 结束值, 默认为 0 step: 步长, 默认为 1 value: 循环中的值, 可不预先定义 |
\ | \ |
{% for value in list(variable) %} | 开始一个基于 list 的 for 循环, list() 为 Python 函数 variable: 要转换为列表的变量 value: 列表中的元素, 可不预先定义 |
\ | \ |
{% while int(loop_index0) < While_Limit and Conditional_Expression %} | 开始一个 while 循环, 循环超时默认为 30 分钟 While_Limit: 循环最大次数 Conditional_Expression: 条件表达式 |
\ | \ |
{% endwhile %} | 结束 while 循环 | \ | \ |
{{ loop_length }} | 当前 for 循环的长度, 结果为字符串形式 |
\ | \ |
{{ loop_index }} | 当前 for/while 循环的索引, 从 1 开始计数, 结果为字符串形式 |
\ | \ |
{{ loop_index0 }} | 当前 for/while 循环的索引, 从 0 开始计数, 结果为字符串形式 |
\ | \ |
{{ loop_revindex }} | 当前 for 循环的索引, 从 1 开始倒序计数, 结果为字符串形式 |
\ | \ |
{{ loop_revindex0 }} | 当前 for 循环的索引, 从 0 开始倒序计数, 结果为字符串形式 |
\ | \ |
{{ loop_first }} | 是否为当前 for 循环的开始, 结果为 True 或 False 的字符串形式 |
\ | \ |
{{ loop_last }} | 是否为当前 for 循环的结束, 结果为 True 或 False 的字符串形式 |
\ | \ |
{{ loop_depth }} | 当前 for/while 循环的嵌套深度, 从 1 开始计数, 结果为字符串形式 |
\ | \ |
{{ loop_depth0 }} | 当前 for/while 循环的嵌套深度, 从 0 开始计数, 结果为字符串形式 |
\ | \ |
{% if Conditional_Expression %} | 开始一个 if 判断 Conditional_Expression: 条件表达式 |
\ | \ |
{% else %} | if 判断条件不成立 | \ | \ |
{% endif %} | 结束 if 判断 | \ | \ |
safe | 关闭 html 自动转义 | {{ "<em>name</em>" | safe }} | <em>name</em> |
length | 长度 | {{ "abc" | length }} | 3 |
wordcount | 计算字符串中单词的个数 | {{ "abc def" | wordcount }} | 2 |
striptags | 删除字符串中所有的html标签, 如果出现多个空格, 将替换成一个空格 | {{ "<a>123</a> <p>456</p>" | striptags }} | 123 456 |
upper | 将字符串转为大写 | {{ "abc" | upper }} | ABC |
lower | 将字符串转为小写 | {{ "ABC" | lower }} | abc |
capitalize | 将字符串首字母大写 | {{ "abc" | capitalize }} | Abc |
title | 将字符串中每个单词的首字母大写 | {{ "abc def" | title }} | Abc Def |
trim | 删除字符串两端的空白字符 | {{ " abc " | trim }} | abc |
ltrim | 删除字符串左端的空白字符 | {{ " abc " | ltrim }} | abc |
rtrim | 删除字符串右端的空白字符 | {{ " abc " | rtrim }} | abc |
reverse | 反转字符串等可迭代对象 | {{ "abc" | reverse }} | cba |
first | 返回字符串等可迭代对象的第一个元素 | {{ "abc" | first }} | a |
last | 返回字符串等可迭代对象的最后一个元素 | {{ "abc" | last }} | c |
join(d="", attribute=None) | 将列表等可迭代对象的元素用指定字符连接, d: 连接符, 默认为空 attribute: 指定属性, 该值不为 None 时获取该属性的值, 默认为 None |
{{ ["a","b","c"] | join(",") }} | a,b,c |
pprint | 优雅地打印变量或对象, 用于调试 | {{ {"a":1,"b":2} | pprint }} | {'a': 1, 'b': 2} |
default(default_value, boolean) | 如果变量或字符串为空, 则将变量或返回值设置为 default_value 默认值, boolean: 是否在变量或字符串评估为 False 时将变量或返回值设置为 default_value 默认值, 默认为 False |
{{ undefined | default("abc") }} | abc |
indent(width=4, first=False, blank=False) | 缩进字符串, width: 缩进宽度, 默认为 4 first: 是否缩进第一行, 默认为 False blank: 是否缩进空行, 默认为 False |
{{ "abc\ndef\nghi\n" | indent(2, True, True) }} | " abc\n def\n ghi\n " |
min(case_sensitive=False, attribute=None) | 返回字符串或列表等可迭代对象中的最小值, case_sensitive: 是否区分大小写, 默认为 False attribute: 指定属性, 该值不为 None 时获取具有该属性最小值的对象, 默认为 None |
{{ ["a","b","c"] | min }} | a |
max(case_sensitive=False, attribute=None) | 返回字符串或列表等可迭代对象中的最大值, case_sensitive: 是否区分大小写, 默认为 False attribute: 指定属性, 该值不为 None 时获取具有该属性最大值的对象, 默认为 None |
{{ ["a","b","c"] | max }} | c |
replace(old, new, count=None) | 将字符串中的 old 替换为 new, count: 替换次数, 默认为全部替换 |
{{ "123" | replace("1","a") }} | a23 |
round(precision=0, method="common") | 对数字进行四舍五入, precision: 精度, 默认为 0 method: 舍入方法, common 为四舍五入, ceil 为向上取整, floor 为向下取整, 默认为 common |
{{ 1.234 | round(2, "common") }} | 1.23 |
sort(reverse=False, case_sensitive=False, attribute=None) | 对字符串或列表等可迭代对象进行排序, reverse: 是否倒序, 默认为 False case_sensitive: 是否区分大小写, 默认为 False attribute: 指定属性, 该值不为 None 时获取具有该属性最大值的对象, 默认为 None |
{{ "acDcsrd" | sort | join(",") }} | a,c,c,D,d,r,s |
truncate(length=255, killwords=False, end='...') | killwords=True 时在第 length 处截断,最后补上一个 end | {{ "abcd" | truncate(2, True,'q') }} | aq |
wordwrap(width=79, break_long_words=True, wrapstring=None, break_on_hyphens=False) | 将字符串按照指定宽度进行换行, width: 换行宽度, 默认为 79 break_long_words: 是否在长单词处换行, 默认为 True wrapstring: 换行符, 默认为 None, 表示使用 "\n" 换行, break_on_hyphens: 是否在连字符处换行, 默认为 False |
{{ "12345678-90 abcdefgh" | wordwrap(5, True, " ", True) }} | 12345 678- 90 ab cdefg h |