2016新版淘宝UA算法文件功能框架的粗浅分析

       目前新版淘宝UA算法所在的js文件20164月上中旬开始,61.js一直更新到当前的66.js,貌似一周一次的频率。每一次更新,其混淆代码的形式都在变化。由于个人反混淆的能力跟不上js文件的更新速度,本系列文章将以64.js为例来记录学习新版淘宝UA算法的一些粗浅认知。

       声明:博主是一个js初学自学者,对于64.js这等高深的文件,只能以个人能获取的资料再加上“蒙猜”技能来理解。因此,本系列文章的说法会很不专业甚至会有错误,还请各位看官谨慎参考,若您对本系列文章的内容有不同的看法,欢迎留言讨论,非常感谢!

       64.js原文件的下载链接http://af.alicdn.com/js/cj/64.js(该链接已失效),该文件反混淆之后的文件的下载链接 http://pan.baidu.com/s/1o8ep0r4 。本文记录64.js的函数结构及主要函数的功能概述。

      64.js其他功能分析的参考链接如下:

       模块化编程方案请参阅淘宝UA算法中exports应用技巧与算法执行流程

       window隐藏措施与事件驱动机制请参阅淘宝UA算法window隐藏技巧与事件驱动机制

       UA来源信息加密方案请参阅淘宝UA算法UA来源信息加密方案浅析(201605)

       新版淘宝UA算法函数结构

       64.js反混淆之前的函数结构图如下图所示,图中标注了3种主要的混淆方式,反混淆的思路可以参考淘宝UA反混淆之常量替换(201605_64.js)》。反混淆之后的文件删除了混淆方式1的字符串,混淆方式2的大部分常量定义,混淆方式3暂时保留。

       如下图所示,64.js的主要功能函数是!function(n){}()和该函数的15个函数组成的参数,后续简称该函数为主函数,下面概述主函数中这15个参数的功能。  

structure in javascript file

        新版淘宝UA算法主函数功能概述

        主函数的15个参数按照其在文件中的顺序从014进行排序,除了01113无输出量供外界调用外,其他函数均有输出变量或者函数供其他函数调用。各函数的输出量与大致功能如下图所示,后续会有文章针对重点函数单独讲解。

function in 64.js

         64.js与201510月的ua.js(参考淘宝UA生成文件actionlog_js_ua.js学习笔记总结UA的来源和去向相比较,我这个非专业人士的角度的观点如下:

         1.参与生成UA的固定信息与前面文章中提到的信息差别不大,包含64.js文件加载时间;用户浏览器类型,版本,是否开启调试;用户操作系统,浏览器所在设备的分辨率,IP地址,访问页面等等信息。

         2.更新UA的事件比ua.js多了触屏和陀螺仪的处理:touch,touchmove, deviceorientation

         3.UA值有三个去处:当前访问页面中IDUA_InputId的元素值;UA_opt [“LogVal”]的值;定时或定量用Image回传访问日志log

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub