wang200704140 发表于 2021-7-1 04:21

JD京东京喜拼拼sign算法问题,有在研究的来一起探讨

调试的API:
https://api.m.jd.com/api?functionId=jxpp.picksite.queryOpenProvinceCityList&appid=jxpp_miniprogram&t=1625075969787&loginType=undefined&loginWQBiz=&body={"buid":325,"time":1625075969788,"signStr":"a35c0af64d2c50924fc1307fb7634209"}&channel=wxappjxpp&cv=1.15.0&clientVersion=1.15.0&client=wxappjxpp&uuid=3eede30a-87b9-517b-0900-75ba01e26c45113d
程序:微信小程序
众所周知,JD拼拼JDPP获取它的商品需要与https://api.m.jd.com/进行通信,提交的数据中sign需要算法获得,并不是改下表单数值就能完成的,那么可以确定,通过各种抓包分析同于不同知道sign是由functionId、appid、loginType、loginWQBiz、buid、time获得的,
一、首先分析URL
1.functionId大概是函数名字,调用的函数类什么的,参与sign的计算
2.appid 看参数顾名思义,就是给JXPP小程序调用的,参与sign的计算
3.loginType 与登录有关
4.time 调用时间,
5.body 里面的就是提交的参数是固定的,不是用户UID什么的,时间,参与sign的计算
6.剩下那部分,只要sign正确可有可无
二、通过反编译小程序,没错,不难发现,拼装成sing的五个东西channel、cv、clientVersion、client、uuid、body里面的数据
```
            key: "dealParams",
            value: function(e) {
                var t = {
                  signKey: "kjylzdcg",
                  data: {
                        channel: d["a"].getClient(),
                        cv: d["a"].getVersion(),
                        clientVersion: d["a"].getVersion(),
                        client: d["a"].getClient(),
                        uuid: Object(B["d"])().uuid
                  }
                };
                e.body = e.body || {}, "undefined" == typeof e.body["buid"] && (e.body["buid"] = d["a"].getBusinessId()),
                e && Object.assign(t, e), Object.assign(t.body, {
                  time: new Date().getTime()
                });
                var a = t.body || "";
                "string" != typeof a && (a = JSON.stringify(a));
                var n, i = this.getSignString(a);
                return e.body.signStr = i, n = Object.assign({}, t.data, e), n;
            }
      }
```
这应该就是sign算法的函数了,其他看不懂
2.这个应该是组装成sgin的流程,只看懂AscII和md5加密
value: function(e) {
                e = JSON.parse(e);
                var t = this.orderByAscII(e), a = this.getParamsValue(t);
                a = a.toString();
                var n = A.md5(a, "xtl_sqg_mall-^&*-damai_(789)_@#$");
                return n;
            }
最后附上,小程序反编译后的源码,有兴趣的小伙伴一起探讨




Lananann 发表于 2021-7-1 10:43

大佬有频道嘛?想跟着喝汤:$qqq

还能念你多久 发表于 2021-7-1 12:06

tank6635985 发表于 2021-7-13 11:43

是撸京东用的吗?

bobbyleu 发表于 2021-7-14 20:52

求提取小程序方法或工具

237873443 发表于 2021-8-5 13:50

楼主加油 期待结果
页: [1]
查看完整版本: JD京东京喜拼拼sign算法问题,有在研究的来一起探讨