1、关 联一、关联的原理当录制脚本时,VuGen 会拦截 client 端(浏览器)与 server 端(网站服务器)之间的对话,并且通通记录下来,产生脚本。当执行脚本时,可以把 VuGen 想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站服务器重新说一遍,VuGen 企图骗过服务器,让服务器以为它就是当初的浏览器,然后把网站内容传送给 VuGen。所以记录在脚本中要跟服务器所说的话,完全与当初录制时所说的一样,是写死的(hard-coded) 。这样的作法在遇到有些比较聪明的服务器时,还是会失效。这时就需要透过 关联(correlation) 的做法来让 Vu
2、Gen 可以再次成功地骗过服务器。举例:常见系统中的登录功能,在登录后服务器会返回 sessionid,登录后的操作都要提交该sessionid 确认身份。使用 VuGen 录制时,将会记录服务器返回的 sessionid 并且原封不动的在下一次请求中发给服务器,如图:待到回放的时候,服务器会在接收到用户名和密码后返回新的 SessionID,而脚本仍然发送旧的 SessionID 给服务器,最终因 SessionID 错误,导致脚本回放失败为了确保脚本回放的成功,我们需要获得服务器每次返回的动态 sessionid,再将这个sessionid 返回给服务器,而关联能够帮助我们将服务器返回的数
3、据进行处理并保存为参数。关联函数是一个注册型函数,需要告诉 VuGen 下一个请求返回是需要被处理的,所以该函数必须要写到请求前。关联函数的作用是通过一种规则将服务器的返回保存到一个参数中,简言之,关联就是对服务器的返回做处理的过程。二、关联的 3 种方式:1. 自动关联2. 手动关联3. 一边录制一边关联1. 自动关联2. 手动关联web_reg_save_param()函数介绍:左右边界: 如果输入的内容里面有双引号,需要通过转义符来进行处理,转义符为:Match case: 检查大小写Binary data: 关联的内容是非 ASCII 字符的,需要使用该选项Use # for any
4、digit: 关联的边界中有些变动的数值时。Instance:可以填写任意整数,也可以填 All,如果填写数字说明从返回的记录中取出对应顺序的值,而填写 All 的话将会返回所有的内容。Relative Frame ID: 这个选项是专门针对框架结构的网站设计的,有些时候需要关联的内容是在某个框架中的,这个时候就需要说明所关联的页面是框架中的哪个了。Search in: Noresource:是从服务器返回的内容来考虑的,是指从资源文件中关联内容,也就是只从HTML 文件格式中抓内容。Header/Body/All:这三个选项都是从请求返回的所有内容进行关联处理,包括图片、javascript 脚本等。savelength: 关联出来的内容所需要保存的长度。save offset:设置关联的内容偏移量,从第几位开始进行关联操作。3. 一边录制一边关联3.1 Tools Http Properties Correlation3.2 创建新的应用,选择 New Application3.3 接下来创建规则,选择 New Rules