使用Jmeter从URL中提取会话ID

时间:2017-08-30 15:46:31

标签: regex jmeter oracle-apex

我正在使用jmeter来测试网站。我目前在提取返回的信息时遇到问题。

例如,我发送HTTP请求到:

    https://intranet.company.com/Capps/f?p=101:1:

网站回复:

   https://intranet.company.com/Capps/f?p=101:1:11016690116729:::::

在响应结束时列出的新数字字符串是我必须用来测试程序其他页面的会话ID。我一直在尝试使用reg Ex提取器,但我似乎无法将数字从网址中删除。我目前正在使用jmeter 3.1

正则表达式我累了:

f?p:101:1:([0-9]{16})::

f?p=([0-9]{1,3}):([0-9]{1,3}):([0-9]{16}):

各种类似的表达,但没有一个对我有用。如果我设置没有会话ID的网站,它将工作,但网站需要使用会话ID。

感谢您提供的任何帮助,

Zwils0

3 个答案:

答案 0 :(得分:0)

我对jmeter一无所知,但我猜它支持标准的正则表达式语法。在正则表达式中,您期望数字会话ID的常量长度为16.但是,会话ID不需要16位数。在您自己的示例中,它有14位数字。如果我在我的oracle apex云帐户上检查会话长度,它的长度为13位。 我猜你不能依赖它的恒定长度,因此,尝试使用这样的东西:

f?p=([0-9]{1,3}):([0-9]{1,3}):([0-9]{10,16}):

甚至这个:

f?p=([0-9]{1,3}):([0-9]{1,3}):([0-9]*):

同时查看以下链接并向下滚动一下。大师Jeff Kemp已经做过类似的事了。

https://jeffkemponoracle.com/2011/10/07/googlebot-apex-session-ids-and-cookies/

答案 1 :(得分:0)

Chris Muir在他专门针对APEX配置jmeter的综合文章中介绍了这一点。已经过时了,但我确信它仍然坚持下去。

c)sessionId正则表达式提取器

  

在fp =([0-9] {1,3}):([0-9] {1,3}):([0-9] {16}):

http://one-size-doesnt-fit-all.blogspot.com.au/2010/05/configuring-apache-jmeter-for-apex.html

这似乎是您尝试过的,但似乎可能有其他设置和注意事项。

答案 2 :(得分:0)

  1. 您需要转义?符号,因为它是元字符,可能会被解释为重复模式
  2. 由于某种原因,您尝试提取16位长整数,而您的ID为14位长
  3. 我建议使用以下正则表达式提取器配置:

    • 要检查的字段:URL
    • 参考名称:任何有意义的内容,即id
    • 正则表达式:f\?p=101:1:(\d+):
    • 模板:$1$

    演示:

    Regular Expression Extractor APEX demo

    参考文献:

相关问题