本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除!
目标网站:aHR0cHM6Ly93d3cuamQuY29tLw==
目标接口:aHR0cHM6Ly9naWEuamQuY29tL2pzVGsuZG8=
接上一篇 JD - h5st解析_小馒头yy的博客-CSDN博客 请求url中的x-api-eid-token参数,经过我调试分析,这个值是由 jsTk.do 接口返回的,我们今天来生成下该 token
一、抓包分析
1、打开开发者工具,清除浏览器缓存
2、发现该接口请求 url中存在加密参数 a, 请求体中存在加密参数 b
二、XHR断点调试
1、打下XHR断点。清除缓存后刷新网页,成功断下。
2、跟栈调试,定位到关键位置,请求url中的加密参数是 d, 请求体中的加密参数是n
3、生成请求url中的加密参数
关键代码: var d = jdtRiskEncryptUtil.TDEncrypt(g),
跟进 TDEncrypt方法,依次补全collectConfig,getEncryptedCollectInfo后直接运行得到加密值
4、生成请求体中的加密参数
往上找找 n的赋值,定位到关键代码:var n = (new TDEnvCollector(collectConfig.getEnvExcludeOptions(_riskFpMode))).getEncryptedCollectInfo();
跟进去,将整个文件代码复制出来,在代码中补全所有的环境,执行以下代码得到解。
var n = (new TDEnvCollector(collectConfig.getEnvExcludeOptions(_riskFpMode))).getEncryptedCollectInfo();
console.log("n:" + n)
5、浏览器中运行得到该加密值
我们在代码中补环境是繁琐的,整个我足足搞了两个小时(还是太菜),今天来整一种简单的写法:在浏览器中加载抠出来的 js文件,再通过RPC获取值
编写html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript" src="jstk_b.js"></script>
</body>
</html>
在浏览器中打开,再执行上面的关键代码,可通过RPC技术获取到该加密值
用生成的加密值成功发送请求。 收工!