前言
akamai是啥公司就不多提了,都说akamai是爬虫行业难啃的骨头,其难点不在js逆向,在于风控。对浏览器信息甚至是页面信息进行采集,然后对各项指标进行一个打分,最终根据打分情况决定是否给你过(具体是啥样我也不清楚,都是我瞎猜的)。在探索了一两周之后,这里简单记录一下心得和成果。强烈建议在看本文之前先观看B站UP主落枫_rain的Akamai系列视频,我也是跟着up弄的。
目标网站
aHR0cHM6Ly93d3cuZGlnaWtleS5jbi8=
akm逆向目标
获取一个有效的cookie:_abck
,该cookie是通过请求页面set-cookie设置的。cookie大概长这样 _abck=00C29F4BDD20D73E1DDFD22031FC2839~-1~YAA......i2Eg==~-1~-1~-1
, 哪怎么算有效了呢,当这段~-1~
变成~0~
。
结果展示
我这过得应该是很简单的akm网站,大数组58个检查点并没有补多少,还没有对鼠标点击移动进行模拟。
废话不多说,肝肝肝!!!。
相关环境准备
python包
pip isntall node-vm2
: 因为本人用的vm2补环境的方案,此包运行补好的js;
pip install pyhttpx
: amk风控还有对tls指纹以及http2指纹检查,我用这个包是可以过的。当然你也可以用pycurl,然后编译boringssl等方案。
nodejs相关
node
: 我的node版本v18.15.0
npm install vm2
: vm2沙盒
请求流程分析
0x0
当我们在浏览器输入网址后,浏览器对原始页面进行渲染,这个时候会异步加载加密的js文件/-ppuDV/Mf/Yc/7kc2/MuFsajKsrY/3rmuJNbLiYON9S/E0B3bzkhJAE/c3tb/alQDYXo
,这个js的url大概长这样,为啥是大概呢,因为过一两天这个url就变了,js内的内容也变了,主要变的是变量名,执行流程没变。 返回的目标cookie大概长这个样子_abck=3F12CDCD57BFFB6E2F1093C5FB59BB45~-1~YAAQ......la8u3cCw2v2fTpd4eZM=~-1~-1~-1
0x1
加密js加载回来之后,浏览器执行js内的代码,对浏览器环境简单的检查一下,最终构建好加密参数,通过XMLHttpRequest
对象, 发送一个url为/-ppuDV/Mf/Yc/7kc2/MuFsajKsrY/3rmuJNbLiYON9S/E0B3bzkhJAE/c3tb/alQDYXo
的post
请求。这次返回的cookie长这个样子_abck=3F12CDCD57BFFB6E2F1093C5FB59BB45~-1~YAAQgZ......Zg==~-1~||1-abaeXPCFxx-1-10-1000-2||~-1
,与上面的cookie区别是~-1~-1~-1
变成~-1~||1-abaeXPCFxx-1-10-1000-2||~-1
, 还不够最终的目标是~0~
啊,继续探索
0x2
如何触发第二次的Post
请求? 每一次环境是如何触发检查的?头痛!!!通过跟栈,以及日志发现加载js的时候绑定了一堆事件,有些环境检查都是通过各种事件去触发的,各种都尝试一下,先去执行上面xhr对象的xhr.onreadystatechange
方法,把新cookie初始化一下,执行window.dispatchEvent
模拟触发一下DeviceMotionEvent
事件,然后把window.setTimeout
里面的保存的方法执行一下,果然发送了第二次的xhrPost
请求,这次返回的cookie有效了,变成~0~
了。_abck=3F12CDCD57BFFB6E2F1093C5FB59BB45~0~YAAQgZZU......SzYvUq329fc~-1~||1-abaeXPCFxx-1-10-1000-2||~-1
检测环境记录
WebGL
,UA
, window.screen
, plugans个数
, html页面检测input输入框
, navigator的属性检测:appMinorVersion bluetooth storage getGamepads
,permissions
,SpeechSynthesis
,
不同样式字体的offsetHeight offsetWidth
,各种自动化浏览器的检测webdriver之类
,两次canvas的toDataURL
等等
amk检测的东西太多,还有很多环境没补完,补到现在也就算刚入门吧。
具体js分析
下次一定
代码
里面有我补的小2w行代码,但是补环境框架代就不给了, 需要的联系wx: h995018884
链接:https://pan.baidu.com/s/1VGSW_-ZFXeMCXYi8FjQHuw?pwd=10yh
提取码:10yh
如果觉得本文不错,就请抽根华子吧
免责声明
本代码仅用于学习,下载后请勿用于商业用途,对于违反相关法律、造成危害的滥用行为,不负任何责任。