__ac_signature 手撸算法

文章详细描述了一种JavaScript签名生成过程,涉及时间戳、当前域名和User-Agent的遍历及字符编码运算,最终得出__ac_signature。作者提供了关键步骤和运算示例,确保签名一致性。
摘要由CSDN通过智能技术生成

该文章主要提供交流学习使用。严禁用于商业用途,否则由此产生一切后果与作者无关,如有侵权请联系作者进行删除。

一. 找到切入点。

window.byted_acrawler.sign("", __ac_nonce);这个就是生成__ac_signature的方法了。

二. 打日志点分析。

断点打完总共输出了1万多行的日志。最终得到'_02B4Z6wo00f018rArUgAAIDCy0Kqc2ebPfvK4KnAAJTEc3'

日志我们从头分析。

获取当前10位数的时间戳。

然后看到对时间戳进行遍历对每个字符进行charCodeAt获取Unicode编码进行运算获取最终值2469814081

接着往下看发现对当前域名也进行了同样的遍历预算并且是从2469814081开始的最后获得值为4293367130

然后把4293367130进行运算得出4071631698然后转成二进制为11110010101100000010101101010010在转成1000000011000011110010101100000010101101010010用parseInt方法最后得到35394602150738

同样的遍历得到47708564

后面日志大部分都是环境检测可以先跳过。

来着这边看到5个字符一组生成了3组字符,跟我们最终结果要的__ac_signature部分一致。

往下看到根据user-agent用上面同样的方便进行遍历并且是从上面得到47708564开始运算得到2985782231

接着对__ac_nonce一样的遍历方式也是从47708564运算得到3999389437

接着又生成三组字符拼接。

前面这个版本可以固定测试不校验。

最后把拼接成的这个进行同样的遍历但运算方法跟上面的稍有不同得出3343502787

在进行toString(,16)的方法得出的数进行截取6-8在拼接前面的得出完整的结果_02B4Z6wo00f018rArUgAAIDCy0Kqc2ebPfvK4KnAAJTEc3

ps:对运算过程不清楚的可以根据前面的索引进行打断点一步步跟

三. 生成流程。

1.对时间戳进行遍历运算从0开始。

2.在用1得出来的结果对当前域名进行同样的遍历运算。

3.在用2得出来的结果进行遍历运算得到一串二进制

在把这串二进制同样进行遍历运算从0开始。

4.对UA进行遍历运算从3得出的数开始。

5.然后进行6组字符串的运算每组需要用的起始数字,都是从1-4得出的数运算而来。每组都是5个字符串其中第二组是6个字符

6.最后用_02B4Z6wo00f01和第5步得出数拼接成一个字符串,在进行遍历运算转化截取最后两位拼接成最终结果。ps:00f有可能会变动但是测试不影响。

最后测试下生成一样,请求也可以用。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值