akamai整体流程简析
作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!
作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!
1、接口分析
目标网站:aHR0cHM6Ly93d3cuZGhsLmNvbS9jbi16aC9ob21lL3RyYWNraW5nLmh0bWw=
目标接口:utapi
这个网站较为简单,正常一轮请求拿到cookie就可以过。直接搜索cookie,找到set-cookie的请求接口。


这个js文件是动态变化的,需要固定代码方便调试,使用fiddle、小黄鸟等抓包软件动态替换。需要的替换Q_OEUB和tracking.html

akm是有tls指纹检测的,需要使用curl_cffi、requests-go这种tls指纹模拟的库进行请求。请求流程:1、请求tracking.html拿到EPG28B的url, 2、get请求Q_OEUB, 3、post请求Q_OEUB设置cookie,4、请求utapi获取目标数据。全程需要使用session维持会话
2、sensor_data参数分析
直接搜索Q_OEUB,通过堆栈进入加密结果位置,打下断点。

这里就是先stringify一下,然后用concat拼接。这个位置已经出结果了,慢慢往上找就可以了。

直接搜索rb0 =,这需要注意地方就是动态ver、动态常量的处理,可以先固定,先还原算法。

TzT = S6['JSON']['stringify'](dMT);
TzT = UKT(37, [TzT, ECC[1]]);
TzT = K2T(TzT, ECC[0]);
var ITC = ''['concat'](33, ',')['concat'](0, ',')['concat'](0, ',')['concat'](1, ',')['concat'](3, ',')['concat'](0);
var I6C = KJC(ECC, dMT['ver']);
TzT = ''['concat'](I6C, ';')['concat'](ITC, ';')['concat'](TzT);
var ODY = S6["JSON"]["stringify"](TzT);
var s6Y = "{\"sensor_data\":"["concat"](ODY, "}");
return s6Y
直接搜索kB0,可以看到kB0来自前面的Kt(),跟进函数简单还原下。里面有一个cookie['bm_sz'],在get请求Q_OEUB中获取即可。里面还有一个绑定js文件的参数,几分钟变一下,短时间内可以固定。

var IdT = function (bm_sz, num_js) {
var FRT = [8888888, num_js];
var pgT = S6['decodeURIComponent'](bm_sz)['split']('~');
if (pgT['length'] >= 4) {
var ItT = S6['parseInt'](pgT[2], 10);
ItT = S6['isNaN'](ItT) ? 8888888 : ItT;
FRT[0] = ItT;
}
var g1T;
return g1T = FRT, g1T;
}
再看hG,直接扣算法,数值全部固定即可。
继续往上找直接搜索'X40 ',主要关注的是ajr、din、mst,其他的可以先固定。


继续往上找PV0、hI0、KL0,直接搜索就完了。

按照上面一套流程下来,扣完应该是可以请求第一轮,然后直接请求utapi接口应该是可以过的,不过cookie是-1,想要出0得3次请求Q_OEUB。
3、参数小笔记
X40对象:
除了bin、ajr、mst
ffs(可固定): 通过返回html的input标签计算得到,第三次请求会多一组
inf(可固定): 等于ffs,没有第三次请求会多的那一组
ajt:3次请求分别为'0,0'、'10,1'、'11,2'
kev: '', 第三次请求中数值会变vev: '', 第三次请求中数值会变
dme: '', 第三次请求中数值会变
mev: '', 第三次请求中等于ajr的mouseMoveData
doe: '', 第三次请求中数值会变
per(可固定): '8', 第2次请求开始数值变大并固定
sww: {"s024": -1}, 第2次请求开始固定数值
ver:短时间可以固定
4、结果展示

更多推荐




所有评论(0)