Skip to main content

PostMan请求参数RSA加密

· 3 min read

背景

离线环境某API请求参数需要进行RSA加密,postman脚本默认不自带RSA加密环境。

看了网上的博客,大多是请求forge.js,通过调用forge.js脚本进行RSA加密

经过多次验证,自己也记录一下

准备forge.js脚本

离线环境可以下载forge.js 文件,通过evel()函数引用

在线环境可以直接在postman脚本中通过pm.sendRequest获取

https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js

在线环境加密

通过pm.sendRequest获取在线的forge.js脚本,并将文本保存在本地变量中,正常获取后,可以将pm.sendRequert代码注释。

// // if(!pm.environment.has("forgeJS")){

pm.sendRequest("https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js", function (err, res) {
if (err) {
console.log("hellworld")
console.log(err);

} else {
// console.log(res.text())
pm.environment.set("forgeJS", res.text());
}
})
// }
//引用forgeJS
eval(pm.environment.get("forgeJS"));
//获取公钥,可以提前把完整的公钥存入encryptKey变量中
const pubKey = pm.environment.get("encryptKey");
const publicKey = forge.pki.publicKeyFromPem(pubKey);
//加密用户名
const encryptedUser = forge.util.encode64(
             publicKey.encrypt("用户名", 'RSAES-PKCS1-V1_5', {
               md: forge.md.sha1.create(),
               mgf: forge.mgf.mgf1.create(forge.md.sha1.create())
        }));
const encryptedPass = forge.util.encode64(
             publicKey.encrypt("密码", 'RSAES-PKCS1-V1_5', {
               md: forge.md.sha1.create(),
               mgf: forge.mgf.mgf1.create(forge.md.sha1.create())
        }));
pm.environment.set("username",encryptedUser)
pm.environment.set("password",encryptedPass)
 

离线环境加密

操作步骤与在线相似。当网络不稳定,或者在局域网使用时,可以先下载离线的forge.js脚本。然后通过http方式发布到本地环境或网络稳定的云服务器上。

不太建议直接将js文本粘贴在变量里,容易造成页面卡死。

不太建议打印res.text(),打开console时容易卡死。

image-20241108190228291

// // if(!pm.environment.has("forgeJS")){

pm.sendRequest("http://qinstyle.cn/forge.js", function (err, res) {
if (err) {
console.log("hellworld")
console.log(err);

} else {
// console.log(res.text())
pm.environment.set("forgeJS", res.text());
}
})
// }
eval(pm.environment.get("forgeJS"));
const pubKey = pm.environment.get("encryptKey");
const publicKey = forge.pki.publicKeyFromPem(pubKey);
const encryptedUser = forge.util.encode64(
             publicKey.encrypt("用户名", 'RSAES-PKCS1-V1_5', {
               md: forge.md.sha1.create(),
               mgf: forge.mgf.mgf1.create(forge.md.sha1.create())
        }));
const encryptedPass = forge.util.encode64(
             publicKey.encrypt("密码", 'RSAES-PKCS1-V1_5', {
               md: forge.md.sha1.create(),
               mgf: forge.mgf.mgf1.create(forge.md.sha1.create())
        }));
pm.environment.set("username",encryptedUser)
pm.environment.set("password",encryptedPass)
 

详情请见:

https://owenliu1122.github.io/2019-12-26-Postman-pre-request-script-%E5%AE%9E%E7%8E%B0-RSA-%E5%8A%A0%E5%AF%86

Chrome 单独启动及制作离线免安装包

· 4 min read

1. 背景

  1. 在客户现场远程堡垒机,发现谷歌浏览器被其他用户占用,涉及生产,不方便强制kill掉服务
  2. 目前在chrome官网下载浏览器时,下载的都是安装器,需要联网才能安装chrome浏览器,在内网中只能传全量包
  3. 由于chrome在100版本后,不支持SSL1.1,一些老旧网站打不开。需要有两个不同版本的浏览器同时运行

2. 创建新的浏览器进程

在同一台堡垒机,多个用户都需要使用浏览器情况

2.1查找chrome.exe路径

找到chrome.exe的路径,一般图标鼠标右键属性,复制目标路径

image-20240718024026582

2.2 创建浏览器用户数据目录

新建一个目录,新的浏览器进程相关的数据文件都保存在该目录中,我的数据目录为桌面的Chrome文件夹。

名称可自定义,

Win + R 快捷键,输入chrome.exe路径 ,加上用户数据目录,回车即可以创建一个新的浏览器进程

命令如下:

"C:\Users\Sanchez\Desktop\TEST\chrome\Chrome-bin\chrome.exe" --user-data-dir=C:\Users\Sanchez\Desktop\Chrome

image-20240718024756298

image-20240718024857408

3. 谷歌浏览器离线包下载

https://www.google.com/intl/en/chrome/?standalone=1

64位下载地址

https://www.google.com/chrome/?standalone=1&platform=win64

注意: 离线环境需检查系统是32位还是64位,32位的系统不支持64位的离线包

4. 制作离线免安装包

在客户现场的谷歌浏览器版本为73,公司使用的前端框架在版本94以下的浏览器访问会出现界面加载缺失或报错等问题。

但是有现场有老旧系统需要版本为73的浏览器才能打开,这种情况下,直接用离线包安装,有覆盖老版本的风险。

4.1 选择离线文件

在chrome.exe所在目录下,在版本文件夹126.0.6478.182的Installer目录下有个chrome.7z的离线包(如何找到chrome.exe根据2.1步骤)

chrome.7z是浏览器的离线包,解压就可以使用。但是直接点击chrome.exe打开的浏览器版本还是旧版本。需要根据步骤2新建

image-20240721005629304

image-20240721005659339

4.2 离线文件创建新进程并制作快捷方式

解压chrome.7z文件,离线文件在Chrome-bin目录下

创建浏览器版本进程跟步骤2类似。

新建APP目录用于存放浏览器解压文件,新建APPData用于保存用户数据目录

点击右键新建快捷方式,输入该链接

D:/APP/chrome.exe --user-data-dir=D:/APPData

rhel8 安装Chrome浏览器

· 2 min read

目前红帽系统默认自带火狐浏览器,个人不太喜欢火狐的UI。尝试安装chrome浏览器

本地环境:Red Hat Enterprise Linux release 8.8 (Ootpa)

1. 网络环境下rpm安装

在网络环境下,可以通过访问chrome官网地址 https://www.google.cn/intl/zh-CN/chrome/ 下载chome 浏览器rpm包

1722708140743

执行 yum localinstall -y google-chrome-stable_current_x86_64.rpm命令安装

image-20240804020433814

直接执行google-chrome命令会报错,需要添加--no-sandbox参数

image-20240804020850163

2. 离线模式安装

离线模式安装于步骤一相似,直接下载chrome浏览器的rpm包,需要注意的是rpm安装需要依赖包安装,需要提前准备依赖。

3. yum源安装

本安装方法也是需要网络环境,通过配置chrome的网络yum源进行安装

cd /etc/yum.repo.d/

touch chrome.repo

cat << EOF > chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
EOF

yum clean all

yum makecache

#安装chrome浏览器
yum -y install google-chrome-stable --nogpgcheck
#启动chrome浏览器
google-chrome-stable --no-sandbox