老司机带你攻破亚马逊metadata1算法的神秘面纱
这是一篇亚马逊技术员的福音文章
亚马逊涉及的二次开发是很多程序员的第二个饭碗,但是亚马逊的开发人员也不是盖的,要攻破他们紧密设计出来的东西可不是唾手可得的,想必骚年们必须经历九九八十一难才能取得最后的正经。下面我们一起来揭开他的神秘面纱吧。
什么是metadata1
这个metadata1,实际是前端采集的很多形为数据,这些数据组成一个很大的object,序列化成string后再加密,最终base64编码得到,大致有以下数据:
1.鼠标点击数据:点击次数,点击坐标、点击间隔等;
2. 键盘按键数据:按键次数,按键间隔等;
3. 页面脚本数据:动态加载脚本列表、静态脚本内容块hash等;
4. 表单INPUT相关:内容hash等;
5. 浏览器信息:userAgent、location、引用页等;
6. 浏览器兼容性:css、js相关的一些兼容检测数据等;
7. 脚本性能数据:页面相关的一些事件触发时间;
8. localStrorage数据:唯一标识ubid;
9. GPU相关数据:支持的功能扩展等;
10.canvas数据:绘制一些形状,如果有表单,还会将表单中某些元素的内容绘制进去,最终计算绘制出来的图形数据的hash值,还会统计图片数据中各字节ascii码值出现的次数;
研究出来的结果
图片: 这是网络上一位大神帮我们开的先路,但是很多人来到这里还是懵逼的。包括我自己
还是老老实实在浏览器上抓个包看看吧。
这是什么鬼,都是给外星人看的吗? 那些亚马逊的程序员为了扰乱视听,搞出这种东西也是恶心啊
函数,变量 都是用o0o0 ilil之类很相似的字扰乱。他们亚马逊搞前端的技术头搞不好是一个变态主义者。哈哈。开个玩笑,毕竟前端的源码是透明的,所以需要特殊的加密方式才可以保证他们的算法安全,但是他们能想出这种方式的加密也是头脑风暴了,给破解他们的人狠狠加了一道高墙。
不管三七二十一了,一定要给他破译出来。 功夫不负有心人,经过九牛二虎之力终于破译了一部分了。累成狗,最终翻译出来是这样的。如下图,代码漂亮许多了吧。但是6000多行代码,,啊。 如果没有耐心的人 ,真的会疯掉。
这一步全部完成后