有人问我thor制作规则时,有的人加判断条件,有的人不加,那到底是加好?还是不加好?
我的答案是必须加!
- 判断条件的定义与作用
1、定义
判断条件是制作thor规则时候针对不同情况可以选择是否执行你的规则的一种命令。
2、作用
它的作用是精准的判断你设置的条件,如果满足条件就能命中断点,从而触发你的规则,不满足条件,就无动作。所以说判断条件是一个先决条件,必须要加。
通过上图,可以看到这些命令其实也分为请求和响应,什么?有人还不会区分请求和响应?我再说一遍req开头的请求,rsp开头的是响应。
- 不加判断条件行不行?
行,没说不行,但是很容易出问题,会导致你的规则可能会误操作。
前几天,有人在群里问我为什么自己做的规则触发不到那个包,我当时回答是可能是触发了白名单。他说触发到别的数据包里去了,那我立即判断它肯定没加判断条件,果不其然,就是这个问题。
- 为什么不加判断条件会误操作?
比如你设置一个替换响应体的命令是匹配遇到的”1″替换成”2″。当你运行这个规则的时候,好家伙,只要遇到响应体带1的全都给你替换成2,不管你想不想替换。这样说,有朋友可能理解不了,那我举个通俗易懂的例子。
场景:学校开运动大会,
已知条件:学校有8个叫小明的。
老师在台上发言:“下面请小明上台领奖。”台下一下站起来8个小明,面面相觑一头雾水。
这就是没有判断条件造成的,
如果加上条件,“请3年级2班的小明上台领奖”这样就很精确了,其他7个小明不会有动作的。
- 常用的判断条件
虽然判断条件的命令很多,但常用的是@req.host、@req.api。其他的命令固然也有相对应的作用,一般很少用,如果对请求头里的值有判断,那可以用@req.header[“对应的请求头”]去判断。
@req.api一般用于判断路径,这个是最常用。
@req.host用来判断主机名,CONTAINS[cd]表示不区分大小写。
也可以写成@req.host=”xxx.com”,这里可以用一个”=”,也可以用”==”,两个等于号指的是绝对值。
提示:主机名不带www.
- 总结
我们在调试网络数据的时候,有时候不同的路径下返回的数据有的不同,有的反倒是差不多,有时候一个路径下的响应体会有多个相同的值(这时候就要改变你的正则表达式,要不然会把所有一样的键值都替换掉),所以如果不加判断条件,很容易把所有的响应数据都更改,或者更改的不是你想要的路径,因此我希望大家在制作自己的规则时,必须要加上判断条件。
评论前必须登录!
立即登录 注册