apifox前置自定义脚本,生成签名

这篇具有很好参考价值的文章主要介绍了apifox前置自定义脚本,生成签名。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为了防止API调用过程中被黑客恶意篡改,调用任何一个API都需要携带签名,TOP服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝

使用apifox工具每次访问都要填写签名很麻烦,写个脚本自动生成签名,解决这种麻烦事

第一步:设置环境变量

apifox前置自定义脚本,生成签名

 第二步:设置全局参数

apifox前置自定义脚本,生成签名

第三步:在项目预览处,设置全局的前置操作脚本 

apifox前置自定义脚本,生成签名

第四步:开始写脚本,脚本代码如下

// 获取预先设置为环境变量的 APPSECRET
let key = pm.environment.get("APPSECRET");

// 存放所有需要用来签名的参数
let param = {};

// 加入 query 参数
let queryParams = pm.request.url.query;
// 获取10位时间戳
var times = Math.round(new Date().getTime()/1000).toString();
queryParams.each(item => {
    if (item.key == 'timestamp') { // 因为设置的全局参数,获取的时间戳有问题,所以这里重新定义时间戳
        param[item.key] = times;
    }else{
        param[item.key] = item.value;
    }
});

// 加入 body 参数
if (pm.request.body) {
    let formData;
    switch (pm.request.body.mode) {
        case 'formdata':
            formData = pm.request.body.formdata;
            break;
        default:
            break;
    }
    if (formData) {
        formData.each(item => {
            if (!item.disabled && item.value !== '') { // 启用且非空参数值的参数才参与签名
                param[item.key] = item.value;
            }
        });
    }
}


// 取 key
let keys = [];
for (let key in param) {
    // 注意这里,要剔除掉 sign 参数本身
    if (key !== 'sign') {
        keys.push(key);
    }
}

// 参数名 ASCII 码从小到大排序(字典序)
keys.sort();

// 转成键值对
let paramPair = [];
for (let i = 0, len = keys.length; i < len; i++) {
    let k = keys[i];
    paramPair.push(k + encodeURIComponent(param[k])) // urlencode 编码
}

// 最后加上 key
paramPair.push(key);

// 拼接
let stringSignTemp = paramPair.join('');
 console.log(stringSignTemp);

let sign = CryptoJS.MD5(stringSignTemp).toString();
console.log(sign);
queryParams.upsert({
    key: 'api_sign',
    value: sign,
});
// 重新赋值时间戳参数,因为不使用这里,全局变量生成的时间戳会跟这里的时间戳有误差,导致签名不一致
queryParams.upsert({
    key:'timestamp',
    value:times,
});

最后运行接口,在控制台就能看到打印出来的签名和拼接串了

apifox前置自定义脚本,生成签名

 文章来源地址https://www.toymoban.com/news/detail-507279.html

到了这里,关于apifox前置自定义脚本,生成签名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【sgCreateAPI】自定义小工具:敏捷开发→自动化生成API接口脚本(接口代码生成工具)

      具体步骤:登录 Apifox https://app.apifox.com/   圈选复制上面的内容粘贴到【接口地址列表】输入框,自动生成脚本代码 生成的接口请求代码是基于 【Vue.js最新版】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本_你挚爱的强哥的博客-CSDN博客 【代码】【最新版】【基于j

    2024年02月09日
    浏览(58)
  • 03、postman前置脚本

    postman前置脚本是指在Pre-requests Script中编写的js脚本,一个请求在发送之前,会先去执行Pre Request Script(前置脚本)中的代码,可以是为某个请求参数随机生成值,也可以是为接口请求数据做加密处理。 主要应用场景: 在发送请求前需要对接口的数据做进一步处理,都可以使

    2024年02月16日
    浏览(37)
  • 算法~totp用作签名防止url被复用

    之前写过关于totp的文章,对它的基础有不清楚的同学,可以先看我的这篇文章《TOTP基础一》《TOTP基础二》 因为totp是把时间分成了一个一个小的时间窗口,当生成totp的服务器和校验totp的服务器不在一起时间窗口,就会出现验证失败的问题,这是不可避免的,时间戳是一个

    2024年02月05日
    浏览(42)
  • JAVA -- sm3加密签名,以及防止重复攻击

            后端开发基本都遇到过使用签名校验的情况,签名的作用是为了防止请求数据被别人截取篡改重新请求。         为什么签名验证可以防止请求数据被篡改,因为一般签名的规则就是,你的所有请求参数,按照约定好的格式进行拼接,后面得到一个拼接后的字符串,

    2024年02月12日
    浏览(41)
  • 【Apifox Helper】自动生成接口文档,IDEA+Apifox懒人必备

    🍊缘由 接口文档对接爽,整理起来真费脑 对于 整理API文档 ,本狗秉承偷懒为上的原则,想找一种 在IDEA中直接生成文档 的方法。 Apifox Helper 绝绝子,只需要在 IDEA中下载插件 ,无脑配置后, 文档自动生成到Apifox ,美完美解决。并且 颜值及方便程度 绝比Swagger和postman好太

    2024年02月02日
    浏览(53)
  • Apifox自动生成接口文档

    官方文档:Apifox - API 文档、调试、Mock、测试一体化协作平台 - 接口文档工具,接口自动化测试工具,接口Mock工具,API文档工具,API Mock工具,API自动化测试工具         打开 IDEA Preferences(Settings) Plugins ,搜索 Apifox Helper 官方地址:Apifox IDEA 插件快速上手 | Apifox 帮助文档

    2024年02月12日
    浏览(44)
  • 随机生成工具类---主要目的是为了造大量数据准备

    有时候需要造大量数据进行测试,或者是用于学习,当然了这个工具类的目的就是为了后面测试easyExcel与 easyPoi 两者性能准备的 需要引入一个 hutool工具类 hutool 工具类在此工具类上的影响并不多,好像就一个随机生成年龄的地方,才用到了,如果不想引入可以直接删除即可

    2024年02月04日
    浏览(38)
  • 如何使用apifox打包测试用例生成测试套件自动化执行

    1、首先点击自动化测试--创建测试用例--新建分组(整理每个模块对应的测试用例),右键点击对应的分组新建测试用例,开始创建测试用例。 2、创建测试用例:输入对应的名称,以及用例执行的优先级(核心、高、中、低),添加对应的用例备注(说明)  3、编辑测试用

    2024年02月11日
    浏览(56)
  • 如何防止xss跨站脚本攻击(代码说明)

    XSS(跨站脚本)攻击是一种常见的网络安全漏洞,攻击者通过在网页中注入恶意脚本代码,从而实现窃取用户信息、盗取会话令牌等攻击目的。为了防止XSS攻击,我们可以采取以下措施: 输入过滤和验证:在接收用户输入时,进行输入过滤和验证,去除或转义用户输入中的特

    2024年02月05日
    浏览(53)
  • 自己动手编写 Windows 防止锁屏脚本程序

    有些公司出于安全和保密工作考虑,会通过 Windows 组策略强制所有办公电脑在无操作的情况下 5 分钟或者 10 分钟自动锁屏,避免无关人士看到不该看的内容。作为程序员,十分反感这种一刀切的方案,一来很容易打断思路,比如正在写代码或者向别人展示时,突然锁屏了就挺

    2024年02月11日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包