热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用jmeter进行批量登录(密码含时间戳加密)

使用jmeter进行批量登录

使用jmeter进行批量登录

    • 使用python进行密钥加密

当登录含时间戳加密信息超时校验时,单独使用jmeter很难实现自动化运行,本文前置信息处理通过python进行,再使用jmeter进行运行登录脚本。

使用python进行密钥加密

加密模块

import rsa
import base64
def _str2key(s):
# 对字符串解码
b_str = base64.b64decode(s)
if len(b_str) < 162:
return False
hex_str = ''
# 按位转换成16进制
for x in b_str:
h = hex(x)[2:]
h = h.rjust(2, '0')
hex_str += h
# 找到模数和指数的开头结束位置
m_start = 29 * 2
e_start = 159 * 2
m_len = 128 * 2
e_len = 3 * 2
modulus = hex_str[m_start:m_start + m_len]
exponent = hex_str[e_start:e_start + e_len]
return modulus, exponent
def rsa_encrypt(s, pubkey_str):
'''
rsa加密
:param s:
:param pubkey_str:公钥
:return:
'''

key = _str2key(pubkey_str)
modulus = int(key[0], 16)
exponent = int(key[1], 16)
pubkey = rsa.PublicKey(modulus, exponent)
return base64.b64encode(rsa.encrypt(s.encode(), pubkey)).decode()

加密密码

def get_password(password):
timestamp = int(time.time() * 1000)
# print("timestamp: " + str(timestamp))
message = str(timestamp) + "-" + password
password = rsa_encrypt(message,
"你的公钥")
return timestamp, password

本被测系统是通过密码加时间戳后进行加密,这块具体代码需要结合自己被测系统的加密算法

把需要请求的参数放到csv文件里面

with open("C:\\Users\\John\\PycharmProjects\\rsa\\LoginInfo.csv","w",newline="") as f:
writer = csv.writer(f)
#写入列名
writer.writerow(['username','password','timestamp'])
#造200条数据,f
for i in range(200):
timestamp, password = get_password("密码")
writer.writerow(['账号',password,timestamp])

使用jmeter运行python脚本
在setup线程组中添加beanshell取样器运行python脚本
在这里插入图片描述

import java.io.BufferedReader;
import java.io.InputStreamReader;
//pytho文件的路径
String command = "cmd /c python C://Users//John//PycharmProjects//rsa//GetLoginInfo.py";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
pr.waitFor();

使用jmeter中的csv data set config对csv文件进行读取
在这里插入图片描述
变量名是csv文件中的列名
在这里插入图片描述
每次运行就会先运行python脚本,避免登录时间戳超时校验的影响
在这里插入图片描述


推荐阅读
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 现在很多App在与服务器接口的请求和响应过程中,为了安全都会涉及到加密和解密的问题,如果不加的话就会是明文的,即使加了GZIP也可以被直接解压成明文。如果同时有Android和IO ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • python实现内容写在图片上的方法
    这篇文章主要介绍python实现内容写在图片上的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体代码内容如下:#-*-co ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 快递100企业版物流快递接口使用流程
    varis_mobinavigator.userAgent.toLowerCase().match((ipod|iphone|android|coolpad|mmp|smartph ... [详细]
  • 一、前言个人认为,PHP是世界上为数不多,最人性化的语言。虽然是二次开发、弱类型语言,由CC编写的PHP引擎去解析。但是,其 ... [详细]
author-avatar
付枪_枪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有