LoadRunner录制图片验证码

2023-11-05

LoadRunner录制图片验证码

LoadRunner自身是无法捕获到图片验证码的,但是我们可以帮助LoadRunner来实现验证码的捕获。

1.图片验证码

图片验证码的产生来自服务器端,由服务器生成随机数,然后写入到图片中。虽然LR可以录制下图片,但是无法从图片中获取数据,因此表面上看LR是无法跳过这关了,那么我们从服务器下手,通常产生的随机数是保存在session中,所以我们可以想办法获取到这个session。

a.针对应用,采用不同的语言,本次讲的是java应用,首先写个*.jsp脚本,用来获取应用当前session的名值对。
b.将脚本调试通过后,放入应用的root目录下。
c.访问该脚本,验证能获取session名值对。

2.捕获验证码

既然可以从服务器获得session的名值对,那么我们就可以用LR来捕获这些值。

a.添加注册函数web_reg_save_param,设置目标边界。
b.通过web_url访问*.jsp文件。
c.处理名值对,使用atoi将字符串型的验证码转换成整型。

3.筛选捕获的信息

a.在捕获的session信息中,可能存在多个名值对,所以建议用循环处理,筛选出验证码的session。
b.建议在获得验证码session后,重新整理脚本,修改web_reg_save_param的目标边界值,然后直接调用web_url访问*.jsp,这样可以避免循环带来的性能问题,提高效率。

4.参数化

将验证码进行参数替换,脚本回放即可。

5.实例

Action()
{
web_url("reg.jsp",
   "URL=http://localhost:8090/verf/reg.jsp",
   "Resource=0",
   "RecContentType=text/html",
   "Referer=",
   "Snapshot=t2.inf",
   "Mode=HTTP",
   LAST);

web_url("CheckCode.jsp",
   "URL=http://localhost:8090/verf/CheckCode.jsp",
   "Resource=1",
   "RecContentType=image/jpeg",
   "Referer=http://localhost:8090/verf/reg.jsp",
   "Snapshot=t3.inf",
   LAST);

web_reg_save_param("vcode","LB=S:","RB=:E", "ORD=ALL", LAST);

SessionInfo("vcode", "http://localhost:8090/verf/verify.jsp", "http://localhost:8090/verf/reg.jsp");

lr_start_transaction("very");

web_submit_data("actreg.jsp",
   "Action=http://localhost:8090/verf/actreg.jsp",
   "Method=POST",
   "RecContentType=text/html",
   "Referer=http://localhost:8090/verf/reg.jsp",
   "Snapshot=t4.inf",
   "Mode=HTTP",
   ITEMDATA,
   "Name=CheckCode", "Value=5715", ENDITEM,
   "Name=btnG", "Value=登录", ENDITEM,
   LAST);

lr_end_transaction("very",LR_AUTO);

return 0;
}

小结

a.此方法有一定的局限性,主要表现在需要写一个服务端的脚本,并将脚本放入应用中,其次对于不同语言编写的应用,需要编写不同的脚本,如java、c#,最后此方法只适用于将验证码保存到session中的应用。
b.可以将上面关于LR的方法写入函数中,方便以后的测试,提供 session.h verify.jsp 脚本供参考。

 

2。verify.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" %>

<html>
<head>
   <title> verify code </title>
</head>

<body>
<%
   java.util.Enumeration<String> enu = session.getAttributeNames();
  
        while (enu.hasMoreElements())
        {
            String name = enu.nextElement();
            Object value = session.getAttribute(name);
           
            out.println("S:name=" + name + ",value=" + value + ":E");
        }
%>

</body>
</html>

 

3.session.h

int SessionInfo(char *name, char *url, char *ref)
{
int count = 0;
char param[50], u[100], r[100];

if (name == "" || url == "" || ref == "")
{
   lr_error_message("Please input all parameters");
   return -1;
}

sprintf(u, "URL=%s", url);
sprintf(r, "Referer=%s", ref);

web_url("Verify.jsp",
   u,
   "Resource=1",
   "RecContentType=image/jpeg",
   r,
   LAST);

sprintf(param, "{%s_count}", name);
count = atoi(lr_eval_string(param));

if (count == 0)
{
   lr_output_message("No match results");
   return 0;
}

while (count > 0)
{
   sprintf(param, "{%s_%d}", name, count--);
   lr_output_message("Results is %s", lr_eval_string(param));
}

return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LoadRunner录制图片验证码 的相关文章

  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • 如何处理 AJAX 请求中的会话超时

    我相信你们都熟悉使用 AJAX 的投票系统 嗯 看那边 我有类似的东西 当你投票赞成或反对时 它使用 AJAX 从 votes php 请求新值 问题是我正在使用会话来获取用户 ID 因此一个人只能投票一次 如果他们在页面上坐了一个小时然后
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • PHP 中的encodeURI() ?

    PHP 中是否有一些不编码的encodeURI 函数 我现在用这个 function encodeURI url http php net manual en function rawurlencode php https develope
  • MVP - 演示者应该使用 Session 吗?

    我正在为网页使用模型 视图 演示者模式 演示者应该知道会话还是应该只有视图知道它 我想我的意思是像会话这样的概念与视图的体系结构非常相关 所以它们应该仅限于视图使用吗 否则 如果我想在不同架构的类似页面上重用演示者 会发生什么 或者我不需要
  • 使用 urllib2 从 FlightRadar24 获取数据时出现问题

    我正在尝试使用下面的脚本从 FlightRadar24 获取数据 基于这个答案 https stackoverflow com a 526695 3904031来处理cookies 当我当前在浏览器中输入该 url 时 我会得到一个不错的长
  • 为什么 java.net.URLEncoder 对于相同的字符串给出不同的结果?

    当我尝试编码时在 webapp 服务器上 me dicaux Je ro me txt using java net URLEncoder它给出以下字符串 me CC 81dicaux Je CC 81ro CC 82me txt 在我的后
  • Node + Express 会话过期?

    我有一个 Express 应用程序 并且有一个登录表单 我需要持续 1 个月的会话 我是否将 maxAge 设置为一个月 以毫秒为单位 我让两台计算机保持打开状态并登录了 24 小时 当我回来时 两台计算机都已注销 我该如何解决这个问题 实
  • 在 PHP 中从 URL 斜杠后获取两个单词

    我需要从 URL 中获取两个单词 例如我有以下 URL http mydomain com alrajhi invoice 108678645541 http mydomain com alrajhi invoice 10867864554
  • PHP 会话未保存

    我把这句话写在我网站每一页的第一行 include restd php 和restd php包含以下几行 session start if isset SESSION id else header location index php 我面
  • 使用 Python 3.x 基本获取 URL 的 HTML 正文

    我是Python新手 我对 Python 2 x 中的旧 urllib 和 urllib2 与 Python 3 中的新 urllib 之间的差异有点困惑 除此之外 我不确定数据在发送到 urlopen 之前何时需要编码 我一直在尝试使用
  • 如何在 Shiny 应用程序中访问/打印/跟踪当前选项卡选择?

    我正在一个闪亮的应用程序中工作 我希望能够访问用户在会话中当前所在选项卡上的信息 我有一个观察事件 用于侦听要单击的特定按钮 简而言之 我想存储 打印用户单击此按钮时所在的当前选项卡 单击此按钮后 选项卡将更改为带有 updateTabIt
  • 将查询参数添加到 URL

    我正在尝试自动从网站下载数据 我需要将动态参数传递到每天更改的站点 html 的结构是表格而不是表单 如何传递参数并从 url 获取结果 这是我尝试过的 它需要在 python 2 7 中 import urllib url https d
  • 将 url 重定向到带有尾随点的主页

    Google 网站管理员显示一些重复的网址 他们是 www abc com index php option com toys view detail n id 148 ite www abc com index php option co
  • PHP - 将文件系统路径转换为 ​​URL

    我经常发现项目中的文件需要从文件系统和用户浏览器访问 一个例子是上传照片 我需要访问文件系统上的文件 以便可以使用 GD 来更改图像或移动它们 但我的用户还需要能够从类似以下的 URL 访问文件example com uploads myp
  • 在 Snakemake 规则中使用 Github URL 进行包装

    我知道在 Snakefile 中定义基于包装器的规则的三种工作方法 rule way1 wrapper repository wrapper 0 0 8 bio samtools sort rule way2 local relative
  • 当SESSION_COOKIE_SECURE = True时如何在HTTP中获取一些用户身份信息

    以下是我正在开发的网站的简短描述 公共页面可以通过 HTTP 或 HTTPS 访问 其他一些页面 认证页面 账户详情页面等 需要通过HTTPS访问 Apache2 负责进行相关的 HTTP 到 HTTPS 链接重定向 我使用标准 Djang
  • 修改不同Django用户的会话数据

    这可能不可能 但是当某些情况发生时 我想修改某些登录用户的会话数据 标记一些额外的逻辑需要在下次加载页面时运行 有没有办法通过用户 ID 访问用户的会话 tldr Query Session模型 然后通过修改匹配会话SessionStore
  • 测试 CodeIgniter 会话变量的正确方法是什么?

    获取以下代码片段 测试确保会话变量不为空的最佳方法是什么 如果稍后在我的脚本中 我调用以下内容 第一个打印正确 但在第二个我收到消息 未定义的变量 已登录 我尝试过使用 empty and isset 但两者均未成功 我还尝试使用向后执行

随机推荐

  • C#读取RTSP流并且录制显示视频(PictrueBox)

    下载Nuget包 EMGU CV 引用Emgu CV public void InitVideo VideoCapture capture new VideoCapture rtsp admin 123456 192 168 0 198 5
  • 使用AFNetworking(一)

    AF是iOS中一个非常优秀的网络请求框架 下面从我个人的角度来对AF的使用做一个规范 文章目录 背景 结构图 核心的类 1 与AF框架对接的类 1 1 管理httpSessionManager 1 2 提供AP对外的API 2 发起类 2
  • WSL 2 环境配置

    WSL 2 环境配置 wsl2是windows内置的linux子系统 安装步骤如下 Win10 版本号为 2004 内部版本19041或更高 即可 如果低于此版本可使用 Windows 10 易升工具手动升级 下载 Windows 10 易
  • QT属性动画--设置样式属性(其他属性)

    这里写自定义目录标题 故事背景 遇到的问题 解决过程 最终方法 总结 故事背景 最近在制作一个按钮切换的动画特效中接触了属性动画这部分内容 并由此产生了一些思考 开始也是不会使用 QPropertyAnimation 这个类 然后就在网上查
  • 本地启动多个Java项目:address localhost:1099 is already in use

    背景 本地启动多个SSM项目 启动第一个项目没有任何问题 启动第二个项目就要报 端口被占用 解决方案 三个方面 tomcat端口不能一样 JMX端口不能一样 debug端口不能一样 步骤 项目1 项目2
  • Flink Sql on Hive 的生产遇到的坑以及优化(持续更新 ...)

    1 HiveSource xxxx xxxx s parallelism 200 is higher than the max parallelism 128 Please lower the parallelism or increase
  • 像OOM打印一样,查看各进程的内存信息,追踪内存泄漏

    linux中当内存不够时 可能会触发OOM out of mem 一般系统出现OOM 可能是系统中有进程存在内存泄漏 当系统出OOM时 会有各进程的内存信息和OOM评分 评分高的task struct会被kill掉 为了追踪内存泄漏是哪个进
  • 工程实践---ZN法整定PID

    工程实践 ZN法整定PID 知乎 zhihu com
  • puppet—批量部署mysql5.7+httpd[包含启动]

    httpd install pp class httpd install package httpd name gt httpd ensure gt installed httpd service pp class httpd servic
  • 枚举类型的用法

    枚举类型的定义 枚举类型 enumeration 是C 中的一种派生数据类型 它是由用户定义的若干枚举常量的集合 定义格式 枚举类型的定义格式为 enum lt 类型名 gt lt 枚举常量表 gt 其中 关键字enum 指明其后的标识符是
  • 一些你需要掌握的 tsconfig.json 常用配置项

    大家好 我是前端西瓜哥 tsconfig json 是用来配置 TS 编译选项的 通常位于项目的根目录位置 我们可以用 ts 提供的 tsc 命令行工具 执行 tsc init tsc init Created a new tsconfig
  • cookie中存储json

    原文发布时间为 2009 12 14 来源于本人的百度文章 由搬家工具导入 http www denisdeng com p 563 最近的一个项目需要在cookie中存储json对象 查看网络资料 没有找到很好的例子 最终利用jquery
  • MySQL 表锁和行锁机制

    MySQL 表锁和行锁机制 行锁变表锁 是福还是坑 如果你不清楚MySQL加锁的原理 你会被它整的很惨 不知坑在何方 没事 我来给你们标记几个坑 遇到了可别乱踩 通过本章内容 带你学习MySQL的行锁 表锁 两种锁的优缺点 行锁变表锁的原因
  • 下载好看的壁纸四个网站就够了,尤其第二个,高清免费壁纸随你挑

    壁纸作为手机电脑的第一印象 我想一张好看的壁纸可以让你的心情变得十分愉悦 每个人喜欢的壁纸类型也是不同的 有些人喜欢科技 动漫 有些人却喜欢唯美 自然 但是好看的壁纸随处都有 但未必时自己想要的哪一款 所以今天我就来给大家推荐一些可以获得大
  • 【SpringBoot】Idea中web项目上传文件相对路径问题

    项目场景 springboot开发javaweb项目 在文件上传接口中 使用transferTo方法保存文件 当采用相对路径时保存会报错 问题描述 相对路径会报一个这样的错误 java io IOException java io File
  • 怎样系统的学习 AI 绘画?模型代码案例

    怎样系统的学习 AI 绘画 学习 AI 绘画需要从以下几个方面进行系统的学习 数学基础 学习 AI 绘画需要具备一定的数学基础 包括线性代数 概率论 微积分等 这些数学知识是深度学习模型的基础 有助于理解模型的数学原理和算法细节 编程基础
  • 抽签助手

    抽签助手实现 学习记录 今天突发奇想想要尝试一波抽签助手 具体代码如下 include
  • tomcat9调优2:Tomcat线程模型分析及其性能调优

    文章目录 Tomcat线程模型分析及其性能调优 Tomcat的IO模型 tomcat设计精髓点 Tomcat调优 Tomcat线程模型分析及其性能调优 Tomcat的IO模型 Tomcat 支持的多种 I O 模型和应用层协议 Tomcat
  • 基于计算机视觉实现自动报靶系统

    基于计算机视觉实现自动报靶系统 自动报靶系统是一种通过计算机视觉技术实现的靶标自动识别和跟踪的系统 该系统可以应用于一些需要高精度打靶的场合 如射击比赛 训练等 本文将介绍如何使用MATLAB实现一个基于计算机视觉的自动报靶系统 准备工作
  • LoadRunner录制图片验证码

    LoadRunner录制图片验证码 LoadRunner自身是无法捕获到图片验证码的 但是我们可以帮助LoadRunner来实现验证码的捕获 1 图片验证码 图片验证码的产生来自服务器端 由服务器生成随机数 然后写入到图片中 虽然LR可以录