免责声明
文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业和非法用途,否则由此产生的一切后果与作者无关。若有侵权,请在公众号【爬虫逆向小林哥】联系作者
01
—
逆向目标
某东的合集来到了第三篇,分析下fingerprint的生成,fp不能用随机数代替,算法生成的fp网页端、m端通用。
生成
测试
商品详情页
02
—
逆向过程
在上一篇我们分析到这个地方的时候,this中fp还是没有的
执行完这个函数fp和tk就出现了,因此需要进入这个函数分析
经过一系列的异步栈
到这里,看见"nt"比较敏感的字符串
这个地方会去localStorge里面取,如果没用会在下一行三目运算生成,我这里事先把localStorge里面的给删除了,直接分析生成的部分
就是下面的jj函数
这里就是个平坦流,有条件的可以ast去一下
没条件的跟我一样直接冲,简单去下混淆
case 2 生成固定字符串 u
case3 随机抽取u内6个不重复的字符串 c
case 8 随机生成1-9的数字一个 f
case 0 找出u字符串和c字符串的差值 i
case 11 比较复杂
var p = {};
p['size'] = f,
p['num'] = i;
var h = t['BDCDK'](t['DZmAI'](t['BDCDK'](t['QcYIY'](Tj, p), c), t['YcJLL'](Tj, {
size: t['XOIGJ'](t.NJALl(t['XOIGJ'](16, 6), f), 1),
num: i
})), f);
根据t对象改写下
var p = {};
p['size'] = f,
p['num'] = i;
var h = Tj(p)+ c + Tj({
size: 9-f,
num: i
}) + f;
最后改为py就是
a1 = "".join(random.choices(p["num"], k=p["size"]))
a2 = "".join(random.choices(p["num"], k=9 - p["size"]))
h = a1 + c + a2 + str(f)
case 4 字符串h转列表 s
case 9 列表s 切片[0:14]
case 1 列表s 切片[14:]
case 10 就是个进制转换 push到l
case 6 列表l extent a列表
最后列表join然后return
完事了
03
—
算法还原
部分代码
完整代码
05
—
归纳总结
添加好友回复:交流群
原文始发于微信公众号(爬虫逆向小林哥):【逆向案例】某东合集之fingerprint(三)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论