1、第一段,时间,固定时间格式,yyyyMMddHHmmssSSS
Date date = new Date();
String ts = DateFormatUtils.format(date, "yyyyMMddHHmmssSSS");
2、第二段,fp,需要扣js算法
3、第三段,appid,每个接口不同,根据接口而定
4、第四段,token,从https://cactus.jd.com/request_algo?g_ty=ajax接口获取;
5、第五段,body,加密算法分3步
1)、body排序后进行一次加密
String encryptBody = DigestUtil.sha256Hex(body);// body加密
//514c880e9b17dfa1b0ca398f8c6c78f92a4d825ed0c52588e2d54610d69e09f6即为加密后的body
String fiveEncryptText = "appid:siteppM&body:"+encryptBody +"&functionId:siteppM_priceskusPull&t:1710338918860";
2)、通过request_algo接口返回的algo的js函数中的指定加密方法进行密钥生成。(每次返回的算法不尽相同)
String factor = "22"; // 4.3更换为22;4.2为74;4.1为04
String encryptText = tk + fp + ts + factor + ai + rd;
String firstEnc = HmacUtil.hmac(tk, encryptText, algorithmName);// algorithmName算法名称,HmacMD5,HmacSHA256等
3)、通过步骤1和2生成的值进行Hmac256加密
String fiveEncrypted = HmacUtil.hmac(firstEnc, fiveEncryptText, "HmacSHA256");
6、第六段,版本号:4.3
7、第七段,时间戳,将第一段转化即可
long time = date.getTime();
8、第八段,浏览器、账号信息参数aes加密
// KEY:&d74&yWoV.EYbWbZ
// IV:0102030405060708
8段拼接即组成4.3版本的h5st
有想法的可以一块研究UVHvvJo4MjMxNzU5NDc=