发现sign太多换一个参数搜索,我们搜索: service_name
不断的调式,发现sign在t中,t里面一共生成了4个东西,t=B函数,所以进B函数里面去看
发现sign实际上是在B函数内部生成的,进去0函数
sign是经过0函数传进3给参数生成的
function O(e, t, n) {
const {include: r, enforceWithKeys: i=[]} = null !== t && void 0 !== t ? t : {};
let o = Object.keys(e);
if (n && r) {
const e = r.concat(["service_name", "service_method", "sign_strict"]);
o = o.filter((t=>e.includes(t)))
}
const a = o.sort().map((t=>{
const n = e[t];
return k(n) ? "" : t + (!i.includes(t) && E(n) ? n : t)
}
)).join("")
, s = "e9fefef711becf4c3d7bfef829578b0c";
return y()(a + s)
}
e={
"resource_id": 1012,
"limit": 1,
"service_name": "marketing.AdStarMarketingService",
"service_method": "GetBannerList",
"sign_strict": 1
}
t={
"include": [
"resource_id",
"limit",
"role",
"extra_info"
]
}
n=true
console.log(O(e,t,n))
开始孔代码 报错:k is not defined
最后面y is not defined
发现y实际上是一个md5加密我们可以在js中进行导包处理
完整代码
const md5123 = require('crypto');//md5加密
function O(e, t, n) {
const {include: r, enforceWithKeys: i=[]} = null !== t && void 0 !== t ? t : {};
let o = Object.keys(e);
if (n && r) {
const e = r.concat(["service_name", "service_method", "sign_strict"]);
o = o.filter((t=>e.includes(t)))
}
const a = o.sort().map((t=>{
const n = e[t];
return k(n) ? "" : t + (!i.includes(t) && E(n) ? n : t)
}
)).join("")
, s = "e9fefef711becf4c3d7bfef829578b0c";
return (a + s)
}
function k(e) {
return void 0 === e || null === e
}
function E(e) {
return ["string", "number"].includes(typeof e)
}
e={
"resource_id": 1012,
"limit": 1,
"service_name": "marketing.AdStarMarketingService",
"service_method": "GetBannerList",
"sign_strict": 1
}
t={
"include": [
"resource_id",
"limit",
"role",
"extra_info"
]
}
n=true
text=O(e,t,n)
sign=md5123.createHash("md5").update(text).digest('hex')
console.log(sign)
/* md5123.createHash:创建一个哈希(md5)
update(text):把要加密的内容放进去;text:要使用md5加密的内容
digest('hex'):输出他的格式
*/
我们可以校验一下:
const md5123 = require('crypto');//md5加密无-js
function O(e, t, n) {
const {include: r, enforceWithKeys: i=[]} = null !== t && void 0 !== t ? t : {};
let o = Object.keys(e);
if (n && r) {
const e = r.concat(["service_name", "service_method", "sign_strict"]);
o = o.filter((t=>e.includes(t)))
}
const a = o.sort().map((t=>{
const n = e[t];
return k(n) ? "" : t + (!i.includes(t) && E(n) ? n : t)
}
)).join("")
, s = "e9fefef711becf4c3d7bfef829578b0c";
return (a + s)
}
function k(e) {
return void 0 === e || null === e
}
function E(e) {
return ["string", "number"].includes(typeof e)
}
// e={
// "resource_id": 1012,
// "limit": 1,
// "service_name": "marketing.AdStarMarketingService",
// "service_method": "GetBannerList",
// "sign_strict": 1
// }
// t={
// "include": [
// "resource_id",
// "limit",
// "role",
// "extra_info"
// ]
// }
// n=true
e={
"platform_source": 1,
"order_by": "score",
"sort_type": 2,
"search_scene": 1,
"display_scene": 1,
"limit": 20,
"page": 1,
"regular_filter": {
"current_tab": 3,
"marketing_target": 1,
"task_category": 1,
"use_recommend": true
},
"service_name": "go_search.AdStarGoSearchService",
"service_method": "SearchForStarAuthors",
"sign_strict": 1
}
t={
"include": [
"platform_source",
"search_scene",
"display_scene",
"page",
"limit",
"sort_type",
"order_by",
"key",
"regular_filter",
"attribute_filter",
"author_pack_filter",
"non_standard_filter",
"author_list_id",
"is_download",
"filter_str",
"author_list_filter"
]
}
n=true
text=O(e,t,n)
sign=md5123.createHash("md5").update(text).digest('hex')
console.log(sign)
/* md5123.createHash:创建一个哈希(md5)
update(text):把要加密的内容放进去;text:要使用md5加密的内容
digest('hex'):输出他的格式
*/
e:就是请求中的参数