【问题标题】:Extract Session ID from URL using Jmeter使用 Jmeter 从 URL 中提取会话 ID
【发布时间】:2017-08-30 15:46:31
【问题描述】:

我正在使用 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}):

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

感谢您提供的任何帮助,

Zwils0

【问题讨论】:

  • 当您说The website responds with 时,您的意思是它重定向到该网址吗? RegEx 提取器上的其他设置如何?
  • 是的,网站自动重定向。其他设置是:要检查的字段 = URL,参考名称 = sessionid,模板 = $1$,匹配号 = 1

标签: regex jmeter oracle-apex


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

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

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

演示:

参考资料:

【讨论】:

    【解决方案2】:

    我对 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]*):

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

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

    【讨论】:

    • 谢谢,我可以将会话 ID 设置为 0,但我仍然无法使用您提供的信息提取会话 ID。我可以在没有它们的情况下测试网站进行初始运行,但该网站必须允许使用会话 ID 登录,我想在网站上线之前对其进行测试。
    【解决方案3】:

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

    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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-03
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      相关资源
      最近更新 更多