1 前言
1.1 说明
本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,如有侵权,请联系作者立即删除。
断断续续的搞akamai已经3年多了,从1.42的版本到现在2.0,一步步的看着它长大变强。
今天突然心血来潮,小小的记录和分享一下对抗的心得。
传送门:yaoqing012
2 难点分析
2.1 akamai的加密主要分为两个部分:
1.js加密
通过监听各种行为事件,当鼠标点击或者键盘按下时会触发一个cookie认证请求,请求参数需要携带sendor_data,这个sensor_data就是通过Js算法得到的。Js部分目前还不算难,跟rs、shape这种vmp相比还好,但是看起来有往vmp方向发展的趋势。
sensor_data传感器收集了大量的设备信息和操作行为信息,相信不少的虫友们已经领教过了,他最核心的地方是canvas、鼠标轨迹、时间差以及这些数值之和等,尤其是canvas虽然是不可逆的,但是通过补环境和random来的一定会被ban。其次是鼠标轨迹,被他的人工智能分析出是不合理的行为轨迹也是一定会被ban的。当然还有其他的一些设备信息,需要你非常有耐心的去分析。
2.ja3请求加密
请求cookie认证的时候看起来只是发送了一个普通的https请求,但实际中他们在请求中做了肉眼看不到的tls指纹校验,这块可以网上查查资料,关键词搜索 “tls指纹” “ja3” 即可。
ja3的突破方案基本上已经人均了,这里不再过多赘述。
2.2 akamai的难点主要在高并发上:
1.高并发问题
他最大的特点就是让你看似过去了,success也是true了,但是一并发就挂了,也是不少小伙伴最头疼的地方,而且无从下手根本都不知道是哪里出了问题。还有一种情况就是会强行拖慢你的请求直到你设置的超时时间timeout。
2.高并发解决方案
这个时候就需要用分治法了:
搞sensor_data的时候发送请求用浏览器发,搞ja3的时候cookie 用浏览器认证好的abck去发,相当于保证分而治之,保证其中一个加密没问题的情况下搞另一个加密。当你有了两个方案以后:先用你的sensor_data去浏览器上请求,能过则sensor_data没问题。然后复制一个浏览器认证好的abck的cookie用你的ja3去请求,能过则ja3没问题。
3 风控小结
-
先搞定js部分的sensor_data,然后过tls检测
-
并发问题需要多对比浏览器生成的sensor_data,分而治之
-
补环境这个方案没听谁说过有成功的案例,想表达什么不用我说了
-
能用真实设备的指纹尽量用真实的
-
先找一个难度级别的网站去搞,比如认证后的abck带~0~的
-
文采有限,后续总结一下再继续更新文章
看到这里我知道很多关键的信息没有指出来,一来是比较胆小怕ls函,二来是一时半会想不起来要说点啥了,后续我再总结问题再另外发文,有其他问题请关注我。