js 匿名函数_js逆向分析之头条_signature参数

2828464023acf5435c82f172aedf759f.png

(文章内容仅供研究使用,若涉及到侵权请联系作者删除)

前几天偶然看见以前写的头条的js得出来的参数已经不能通过验证了,看了下新的js,经过一天半的调试终于找到了原因。

1>全局搜索找到_signature生成的函数。

53509519e004e6a60e459a3ce8647c04.png

2>进入函数。

2c9371906cf3ffd97c6a94115ed0f9a7.png

这里可以看到传入的参数和以前不一样了,现在传入的是一个url对象。里面的as,cp参数的生成略过,比较简单。

3>进入这个g.sign函数调用

92dbb898767c72159c5f2d3592fdd1db.png

里面是一个匿名函数的一个方法。在这个匿名函数处打上断点,点击页面刷新,进入到这个匿名函数执行的地方,根据调用栈找到这个地方。

db89cdf887065577fe50b98fdf750fc5.png

这里在调用这个匿名函数的时候传入了一串字符,一顿操作之后给g.sign定义了函数调用方法。观察这串字符串,和之前的比起来应该是变了很多了。

接下来我们构造调用方法,将匿名函数命名,然后传入字符串和一个对象。然后调用这个对象的sign方法传入参数得到_signature,是的,和以前没有什么变化。当我们构建好navigator之后运行,得出来的参数一看,gg了。

很显然里面还有其他的坑。

ac49b410891140da1b6226789e3a8d4a.png

Snippets调试可以推荐大家和本地调试结合起来使用。

然后我们来看一下代码,接下来就是需要极大的耐心,切记切记。

e9ef34a618a5adf333685f8112649efb.png

这个代码经过了混淆,特别是用switch,case方式进行调用,无法根据调用栈找到规律。作者选择硬杠。

关键参数处打印。

ac3fdc215583fb72c1299abf6b02ef83.png

b63920952a5a3d57187cd9f8c1c60227.png

3c793d9f9bfcf321cca21fc48ded2cd2.png

83bba6338d1108e76cb28983a1e0e61b.png

是的,就这些玩意,调试了一天。可以看出来,做了canvas的2d绘图,document操作,验证了ua。怎么办。

一个个模拟。

本地测试。。。。还是gg 了。

这时候想到了2种可能:

1.模拟不彻底。

2.网站环境有别的验证参数。

首先考虑第二种,这个验证很简单,拿到Snippets放到网站页面测试一下,对比下参数可知。

然后考虑是对cookies做了操作。用油猴做了测试,冉鸾。

没办法。

继续调试,对比本地和网站调试的结果。

终于在一处找到了原因。

d3f15b6561cfe4b8af0745b4a2885955.png

这个tac就是原因。全局搜索tac.

e1f666e10a2a642b0def964a2be5c621.png

终于在首页源码中找到了答案。带入代码中请求。成功。

最后:

后来发现头条对canvas似乎并没有做验证,但是这不重要,线在反爬越做越恶心越来越难是真的。而且在调试中发现,头条在网站环境对某些函数做了hook,试想如果在这里面挖坑又的坑倒多少人。另外这个switch的调试也比较恶心。

新年快乐,祝大家越来越牛,越来越好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值