使用 Jmeter 从 URL 中提取会话 ID

Extract Session ID from URL using Jmeter

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

例如,我将 HTTP 请求发送至:

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

网站响应:

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

响应末尾列出的新数字串是我必须用来测试程序其他页面的会话 ID。我一直在尝试使用 reg Ex 提取器,但我似乎无法从 url 中提取数字。我目前使用的是 jmeter 3.1

正则表达式我已经厌倦了:

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

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

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

感谢您提供的任何帮助,

Zwils0

我对 jmeter 一无所知,但我猜它支持标准的正则表达式语法。在您的正则表达式中,您需要一个长度恒定为 16 的数字会话 ID。但是,会话 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]*):

另请查看以下内容 link 并向下滚动一点。 Guru Jeff Kemp 已经做过类似的事情了。

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

Chris Muir 在他关于专门为 APEX 配置 jmeter 的综合 post 中对此进行了介绍。它已经过时了,但我很确定它仍然有效。

c) sessionId 正则表达式提取器

f?p=([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

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

  1. 您需要转义 ? 符号,因为它是一个元字符,可能会被解释为重复模式
  2. 出于某种原因,您尝试提取 16 位长整数,而您的 ID 是 14 位长整数

我会建议以下正则表达式提取器配置:

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

演示:

参考文献: