赞
踩
查看搜索的接口,很明显需要这几个参数
{
keyword: "2N7002",//搜索输入的关键词
font_ident: "945a41f33fc9693c", //如下图,第一次访问的页面 返回的html里找
v: "1655799627669" //时间戳
t: "183977736408" //加密1
s: "8fc0bf84f2909690" //加密2
}
这种一大坨代码的,我最喜欢的是通过xhr - 启动器 根据Ajax往上跟栈
这里看到n就是要发送的数据,下断点后 参数有在这,n是函数的参数,所以再往上看谁调用的它(看谁传的)
搜索得到 this.currentParams = a.deserializeParams(this.options.remote.params)
this.options又等于t.extend(!0, {}, o, t.fn.pagination.defaults, i) i是上面传过来的
懒得写了,直接一直往上跟,跟到混淆的那地方
这里偷懒大法 神技-ast(只解了个大数组就好看多了)
很明显 这里就到站了。
_0x36dfe8['v'] = JSON["stringify"](new Date()["getTime"]());
4 == _0xc145e3["pageType"] && (_0x36dfe8["search_type"] = 1);
'{}' !== JSON["stringify"](_0xc145e3["filterParams"]) && (_0x36dfe8["se_item"] = _0xc145e3["se_item"], _0x36dfe8["params"] = _0xc145e3["filterParams"]);
_0x36dfe8 = _0x3ea76b["getSpecialKey"](_0x36dfe8);
这里 获取了v之后,对象_0x36dfe8就改变了,看到是进行了getSpecialKey函数的操作,所以这行下断点,再单步走进去看。
俩参数就在这里完成的
下面就要开始把js代码扣下来用了。
这么丑的代码,扣代码调用吧(本来想改python的,最后那个魔改的md5不知道怎么改python)
附上s的python代码参考下。。
times_int = int(times)
// times是时间戳
_0x5d4ff8 = 0
_0x24ee4f = times[len(times) - 1:]
print(_0x24ee4f)
s = str(math.ceil(times_int / int(_0x24ee4f)))
现在讲扣js代码吧
全选代码复制粘贴到notepad++
折叠,搜索,改写
主要的生成函数 在_0x54521b 对象里,理论只要把它弄下来就好
但是 因为混淆的,还要扣大数组啊,解密函数啊,Object啊
我用的ast解版,所以 偷懒了
思路:
1.这个自执行,_0x54521b是传入的参数,这里去掉自执行函数改写_0x54521b 定义空对象
然后window肯定要带上的。
2.改写t和s的返回方式
3.就这样跑一下代码,会提示_0x39a116未定义,去网站代码复制一下这个对象
这是个混淆的,增加你代码阅读难度,,可以用ast解。。这里直接复制吧
再跑一下,应该就差最后一个了 ,提示_0x54521b.md5未定义还是啥来着
这里去补一下魔改的md5代码,
想直接从网站扣的,哎,难顶 太难扣了,直接找个通用的吧
这两个值被改了,改写,再补到对象上,再小小的修改下代码就完成了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。