web_reg_save_param_ex简介

摘要:
chartemp[100];char*token;externchar*strtok;lr_save_string;strcpy;//取出参数值,并且赋值给变量temptoken=strtok;//使用&符号作为分隔符这个时候token="sessionid=54321123",并且是根据&符号分隔的,所以id的长度可以任意变化,而token中的sessionid可以通过关联的时候SaveOffset进行处理,或者使用strtok()函数对等号再次进行处理。而在LR11中提供了web_reg_save_param_regexp正则表达式关联,上面的写法也可以退休了。
  • Save Offset

设置关联的内容偏移量,从第几位开始进行关联操作。回到最开始的例子,我们抓取的是You have successfully installed XAMPP on this system!,如果需要获得successfully installed XAMPP on this system!这个字符串,则不用改变左边界,只需要设置Save Offset为9即可,代码为:

web_reg_save_param_ex(

"ParamName=temp",

"LB=Congratulations:<br>",

"RB=</b><p>",

"Ordinal=1",

"SaveOffset=9",

SEARCH_FILTERS,

"ContentType=text/html",

LAST);

  • Save Length

关联出来的内容所需要保存的长度。在Save Offset的例子中我们写到如何获得successfully installed XAMPP on this system!这个字符串,如果我们还希望获得这个字符串中的successfully installed XAMPP,那么可以再添加Save Length为22,代码变为:

web_reg_save_param_ex(

"ParamName=temp",

"LB=Congratulations:<br>",

"RB=</b><p>",

"Ordinal=1",

"SaveOffset=9",

"SaveLen=22",

SEARCH_FILTERS,

"ContentType=text/html",

LAST);

通过Save Length和Save Offset的设置,我们就可以方便地抓取服务器返回的定长数据的任意一个部分了。
  • Scope
该项设置关联查询的范围,在LR11中和以前的范围做了一些调整,应该算是更加强大了,这里Scope提供了4个选项:Body、Headers、Cookies、All。

2)Headers/Body/Cookies

这3个选项都是从请求返回的所有内容进行关联处理,包括图片、JavaScript脚本等。区别在于对返回信息的分隔方式。在前面介绍HTTP的时候介绍过HTTP返回的内容其实是由Header(HTTP信息)和Body(HTTP内容)组成的,而Cookie又是Header中的一部分,在Tree模式下的HTTP View视图中可以清晰地看到LR如何定义各块内容。当我们对Phpwind登录返回做关联时,不同的Scope带来的效果如下。

strtok()函数的作用是通过某个分隔符来切分内容的。

char temp[100];

char * token;

extern char * strtok(char * string, const char * delimiters );

lr_save_string("sessionid=54321123&action=work","param");

strcpy(temp,lr_eval_string("{param}"));//取出参数,并且赋给变量temp

token = (char *)strtok(temp,"&");//使用&符号作为分隔符

这个时候token="sessionid=54321123",并且是根据&符号分隔的,所以id的长度可以任意变化,而token中的sessionid可以通过关联的时候Save Offset进行处理,或者使用strtok()函数对等号再次进行处理。

而在LR11中提供了web_reg_save_param_regexp正则表达式关联,上面的写法也可以退休了。打开Add Step添加步骤,选择web_reg_save_param_regexp函数,打开设置窗口,如图所示

web_reg_save_param_ex简介第1张

在这个函数中关键就是在Regular Expression的写法上,在前面XML参数的lr_xml_find函数中我们提到过正则表达式的写法,在这里的写法唯一区别在于需要关联返回的内容需要用()圆括号标记。例如,这里的read(.*).php就是指所有符合read开.php结尾中间的任何内容都关联保存到参数temp中,这里的是转义符,确保.号能够正确地当做普通字符来匹配。

免责声明:文章转载自《web_reg_save_param_ex简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇分页 算法#ifndef/#define/#endif使用(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

getchar()和scanf()混合使用的坑

最近在混合使用 getchar() 和 scanf() 的时候遇到一个坑,现在记录一下。 代码中使用 getchar() 处理字符输入,用 scanf() 处理数字输入。 getchar() 读取每个字符,包括空格、制表符和换行符; 而 scanf() 在读取数字时则会跳过空格、 制表符和换行符。 比如下面这个程序,读入一个字符和两个数字,然后根据输入的两...

ncurses库的一些函数

为了实现一个简单的聊天程序,如果使用普通的输入输出函数,会很凌乱。so,便想着能不能用下ncurses这个字符图形库 总结一下,就是这样。 使用ncurses时,先需要初始化窗口,程序结束时,主动调用endwin结束窗口。initscr();endwin(); 输出函数 #include <curses.h> int printw(const...

Delphi指针的用法

DELPHI指针的使用 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今的Object Pascal,可以说在指针运用...

Java虚拟机14:Java对象大小、对象内存布局及锁状态变化

一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法。不过还好,在JDK1.5之后引入了Instrumentation类,这个类提供了计算对象内存占用量的方法。至于具体Instrumentation类怎么用就不说了,可以参看这篇文章如何精确地测量java对象的大小。 不过有一点不同的...

[PHP]curl上传多文件

码一下curl上传多文件的行 5.5之前版本的写法 $file = array( 'pic[0]'=>"@E:\wwwroot\10003\temp_56.ini;type=text/html;filename=temp_56.ini", 'pic[1]'=>"@E:\wwwroot\10003\...

C++20新特性

C++20新特性 新增关键字(keywords) concept requires constinit consteval co_await co_return co_yield char8_t 模块(Modules) 优点: 1)没有头文件; 2)声明实现仍然可分离, 但非必要; 3)可以显式指定导出哪些类或函数; 4)不需要头文件重复引入宏 (incl...