众所周知 ?耐克nick 阿迪adidas 德州仪器(TI ti.com) ?得捷电子(digikey )贸泽电子(mouser)等较大的芯片 购物之类的网站都引入了akamai的js防机器人识别系统,现在最新的akamai版本是1.7,如果想实现http抢购,那么破解akamai的js 实现sensor_data 然后换取相关有用的_abck是必须的,然后模拟tsl(模拟浏览器怎么发送请求的 不是简单的python go php等)使用个requests就可以的,然后发送相关的数据,那么问题就解决了。 ?
其中源码的这段话?
if (bmak[_ac[434]](_ac[764]), _cf[_ac[798]] > 0) {
for (var bm_counter = 0; bm_counter < _cf[_ac[798]]; bm_counter++) bmak[_ac[335]](_cf[bm_counter]);
bmak[_ac[434]](_ac[665] + bmak[_ac[482]][_ac[179]]() + _ac[502]),
_cf = {
push: bmak[_ac[335]]
}
} else {
var bm_script;
if (document[_ac[710]] && (bm_script = document[_ac[710]]), !bm_script) {
var scripts = document[_ac[339]](_ac[410]);
scripts[_ac[798]] && (bm_script = scripts[scripts[_ac[798]] - 1])
}
if (bm_script[_ac[427]]) {
var bm_url = bm_script[_ac[427]],
url_split = bm_url[_ac[201]](_ac[767]),
obfus_state_field;
if (url_split[_ac[798]] >= 4 && (obfus_state_field = bm_url[_ac[201]](_ac[767])[_ac[8]]( - 4)[0]), obfus_state_field && obfus_state_field[_ac[798]] % 2 == 0) {
var state_field_str = bmak[_ac[603]](obfus_state_field);
state_field_str[_ac[798]] >= 3 && (bmak[_ac[36]][_ac[399]](_ac[378] == state_field_str[0]), bmak[_ac[36]][_ac[299]](_ac[378] == state_field_str[1]), bmak[_ac[36]][_ac[69]](_ac[378] == state_field_str[2]), bmak[_ac[36]][_ac[53]](bm_url))
}
}
}
其实就是在判断是否是浏览器里面的JS 而且url 地址也进行了检测
检测完成后就进行了赋值,其中?
bmak.cf_url
多次进行了赋值
因为上面还有个debug模式
所以我去掉了 直接完成后的逆向JS是:
if (bm_script.src) { //这段话很有意思哈,因为我们的脚本都是src里面的,要是直接内嵌到html或者其他的话就是false了,就不执行了,所以是个坑,要注意哦
var bm_url = "https://www.ti.com/6uAF/Mf67/o/Y/7zOGNghQ/3Nbuf2DNazEQ/ADNEAQ/KlY/LA10xJz8B"
var url_split = bm_url.split("/")
var obfus_state_field = "3Nbuf2DNazEQ" //url地址的倒数第四个参数
if (url_split.length >= 4 && obfus_state_field.length % 2 == 0) {
var state_field_str = bmak.getStateField(obfus_state_field); //具体是干嘛的不知道 反正经过计算得出110011
state_field_str.length>= 3 && (bmak.listFunctions._setFsp("1" == state_field_str[0]), //这个需要注意的是 这是给bmak.cf_url 设置"https://" 另外根据传入的false 和 true 给fsp赋值成false 或者 true 等实战的时候记得传递后需要进行计算
bmak.listFunctions._setBm("1" == state_field_str[1]), //经过测试 无论是传递false 还是 true bmak.bm 永远 等 true 另外还重新给bmak.cf_url 和 bmak.params_url 重新进行了赋值+
// bmak.cf_url = "https://www.ti.com/_bm/_data"
// bmak.params_url = "https://www.ti.com/get_params"
bmak.listFunctions._setPowState("1" == state_field_str[2]), //给bmak.pstate 赋值,传递的值为 t 是true 或者 false罢了
bmak.listFunctions._setAu(bm_url)) // 重新给 bmak.cf_url 赋值成了 bm_url https://www.ti.com/6uAF/Mf67/o/Y/7zOGNghQ/3Nbuf2DNazEQ/ADNEAQ/KlY/LA10xJz8B
}
}
|