javascript - 关于淘宝UA生成文件的一些粗浅的分析和疑问

查看:201
本文介绍了javascript - 关于淘宝UA生成文件的一些粗浅的分析和疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

近期学习了淘宝的UA生成文件actionlog_js_ua.js(以下简称ua.js),该文件是2015年10月底抓取的,目前新版本的淘宝登录时UA还在,但是我还没有找到类似的文件。因为本人js基础差,所以这里谈一谈个人对ua.js文件非常粗浅的分析:
1.ua.js有一个名为UA_opt的数组,该数组值决定着UA更新的参与的事件与信息类型。但是ua.js文件中只是从该变量中取值,所以我怀疑该变量来源于当前访问页面或者其他js文件。
2.当前访问页面DOM加载完成时,UA文件会获取如下信息,依次用于更新UA。
2.1 记录当前浏览器是否开启调试功能的标志和指向文件最外层匿名函数的指针
2.2 Ua文件调用的时间
2.3 浏览器名称,浏览器主版本号,运行浏览器的操作系统类型
2.4 UA_opt[‘TokenStr’]
2.5 当前访问页面的URL和referer
2.6 用户屏幕分辨率,浏览器窗口尺寸
2.7 JSocket.getos()和JSocket.getversion()
2.8 document.JSocket.getlso()和调用getlso的时间
在获取上述信息时,相邻两个信息之间都会进行网络超时检测,若相邻两个信息获取时间间隔大于5s,那么程序就会抛出异常。
3.当访问页面中有鼠标(mousemove,mousedown,focus,blur)或键盘事件(keydown)发生时,获取当前事件发生的元素ID,当前鼠标时间发生的坐标,鼠标键(左中右?),键盘键值等信息用于更新UA。其中mousemove会有一定处理周期,例如N次mousemove事件更新一次UA(N由UA_opt决定),其他事件每一次发生时都会更新UA。
4.根据UA_opt的设定,ua.js会定时或定量的通过image对象将UA相关信息回传给服务器,其中部分代码如下:

ytq = function (sb81, d) {
    var sb = new Image();
    var embn = (new or["Date"]())["getTime"]() + upc["Math"]["random"]();
    upc[embn] = sb;
    sb["onload"] = sb["onerror"] = function () {
        upc[embn] = null;
    };
    sb["src"] = sb81 + upc["encodeURIComponent"](d);
    sb = null;
};

5.在UA获取过程中,或检查函数的调用逻辑,若调用不合理,程序也会抛出异常。

关于actionlog_js_ua.js更详细的分析和更多的源代码,大家可以参考actionlog_js_ua.js混淆编程形式与执行主流程

现在问题是,在目前新版本的淘宝中,我不仅找不到ua文件,也找不到UA_opt数组,而以前还没有学习该文件时,我有没有注意过登录页面是否包含UA_opt数组,不过以UA_opt为关键词进行搜索,倒是能找到一些相关的代码。

我想请教大家:1.大家是否有在淘宝的某个页面发现过UA_opt? 2.现在新版的淘宝登录界面中,类似以前的actionlog_js_ua.js文件现在的名字是什么?它又隐藏在哪里呢?

非常感谢各位的建议和回答!

解决方案

这篇关于javascript - 关于淘宝UA生成文件的一些粗浅的分析和疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆