阿卡迈 Akamai 逆向分析

https://www.dhl.com/cn-zh/home.html?locale=true

第一次请求主页

第一次请求主页获取cookie中的_abck, ak_bmsc, bm_sz

url = "https://www.dhl.com/cn-zh/home.html"


response = requests.get(url, headers=headers, proxies=proxies)
# response = requests.get(url, headers=headers,  params=params)

# print(response.text)
print(response)
_abck = response.cookies.get('_abck').strip()
ak_bmsc = response.cookies.get('ak_bmsc').strip()
bm_sz = response.cookies.get('bm_sz').strip()
print("_abck:",_abck)
print("ak_bmsc:",ak_bmsc)
print("bm_sz:",bm_sz)

浏览器中先把之前的cookie清除干净 f5刷新页面,随后查看home.html, 可以看到响应返回了三个set-cookie

在应用->cookie中我们看到了设置的_abck,ak_bmsc, bm_sz 值需要这三个,cookieDisclaimer不需要

 

 第二次请求获取新的_abck

根据第一次请求获取的_abck,ak_bmsc, bm_sz 发起第二次请求,第二次请求的url是第一次请求home.html返回信息里面有一串难读的字符见下面截图

import requests


headers = {
    "accept": "*/*",
    "accept-language": "zh-CN,zh;q=0.9",
    "cache-control": "no-cache",
    "pragma": "no-cache",
    "priority": "u=2",
    "referer": "https://www.dhl.com/cn-zh/home.html?locale=true",
    "sec-ch-ua": "Chromium;v=124, Google Chrome;v=124, Not-A.Brand;v=99",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "Windows",
    "sec-fetch-dest": "script",
    "sec-fetch-mode": "no-cors",
    "sec-fetch-site": "same-origin",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
}
cookies = {
    "_abck": _abck,
    "ak_bmsc": ak_bmsc,
    "bm_sz": bm_sz
}
url = "https://www.dhl.com/fQmAG/07g/raqB/2Kjzlo/hN/GaODmmr6ipkp/bGdLUXc/eXVpFhMw/Lzo"
response = requests.get(url, headers=headers, cookies=cookies,proxies=proxies)
# response = requests.get(url, headers=headers, cookies=cookies)

# print(response.text)
# print(response)
print(response.cookies)

print("第二次获取cookie结束")
print("===============================================================")

第二次请求返回结果 这里有一个-1值,-1代表还未成功 后续还需要这个新的_abck  cookie来进行第三次请求

Lzo这个url是第一次请求html后返回的页面中有这么一个url,第二次请求时候用到

 

第二次请求的Url是个get请求带上第一次返回的cookie

 

响应返回一个js文件,后续需要调试这个文件里面的内容

 

cookie中返回一个新的_abck

 

 第三次发送请求,获取可用的cookie

通过分析第二步获取的js代码,获得算法代码产生一个akamai_py.js 算法文件,这个文件会产生一个sensor_data,我们需要在请求中使用sensor_data来获取最终的可用js


cookie_abck = response.cookies.get("_abck").strip()


with open('./akamai_py.js', 'r',encoding='utf-8') as file:
    js_code = file.read()
js_code = js_code.replace('var cookie_abck = "";', f'cookie_abck = {json.dumps(cookie_abck)};')
js_code = js_code.replace('var ak_bmsc = "";', f'ak_bmsc = {json.dumps(ak_bmsc.strip())};')
js_code = js_code.replace('var bm_sz = "";', f'var bm_sz = {json.dumps(bm_sz)};')



ctx  = execjs.compile(js_code)
result = ctx.eval('ak_bmsc')

sensor_data = ctx.call("get_res")
print("sensor_data: ", sensor_data)



headers = {
    "accept": "*/*",
    "accept-language": "zh-CN,zh;q=0.9",
    "cache-control": "no-cache",
    "pragma": "no-cache",
    "priority": "u=1, i",
    "sec-ch-ua": "Chromium;v=124, Google Chrome;v=124, Not-A.Brand;v=99",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "Windows",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "sec-fetch-user": "?1",
    "upgrade-insecure-requests": "1",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "origin": "https://www.dhl.com",
    "referer": "https://www.dhl.com/cn-zh/home.html?locale=true",
    "content-type": "text/plain;charset=UTF-8"
}
cookies = {
    "ak_bmsc": ak_bmsc,
    "bm_sz": bm_sz,
    "_abck": cookie_abck
}

url = "https://www.dhl.com/fQmAG/07g/raqB/2Kjzlo/hN/GaODmmr6ipkp/bGdLUXc/eXVpFhMw/Lzo"

# sensor_data = "2;0;3421753;4338758;38,0,0,0,6,0;LTV L3]O&!a;e54=yZSY#=&6xDr)YOWPp +c2lFJ} `y3CF_H&(1j$W-d4z8^`mZ?N[,[X9*z ZHlYa|dD^bouB]L g@NnwbQ`~f3BkhWe_-fKh=l>Q!m:bE3mClGbogXv1$L+LA29 WoEPz{j&/w@*cc7$_CNd]`yZwYgTaKg]`7yQyhW,<XsH! a^)MPZH-Ti0cm^vm !(W9c7,Hz1d`TE7r%YGW1%#Z|tanh*5>IV<=]/:87GtKP?J.4jW4X_b/eXHcf$*~+pMG;,9O#pcL*ZN/=-xco.1k==8R` !MNcbo;&,>wM;)A*1,B15V,HR5zyn7;pq>OvgiJ9GS5rjhpixy>szZFHmS/4>^wDY/?adrQ@amQ613UDDCSulP=aoVH]4>HksDJSQZD=WzV>ADonA.ON]9.PraLfa7T3Z0/G7G8~UkiKRe(,MWu#/W0AVXPpvSq~0[oSn%rr0[XHkf*6nu=BfRVi@A3[z^jb,C]s!MPN{KL?Pe|<})_r)lrJz||LVLk3R)L$Sn|/`|04@O6EmCk&3><}TMX<N5kb-xL U(vY#_x3av;^AFF@HKm7*$:X`E`~(T^weN!RM$^Gn1%x>W2{@Rk</:>&FsAFma76[vwuJ`wfC8:s6tu4D.#r^f9mJ(!kpfUes;^7 |voeR~~mJ-axU6d|cE$;c:}|~MDYRqbL9hu,|PU([/o&g?MCsGrFG.I(@<]D3iL(bR#66MXE=1zTn!= B5rd.`n^{H?{SzcPz1jL*GHx+GAKJwUP0tS=o1SGa7J$DBdU5nt;pO ~Li&b</~(sa7{8lHB1nv(F-0B)<ldQg1qrY]0G|?;N=tCNg%&n!<?.4)Yg7@ZpMODxn/H_+Ts5w3!~od=?L:$./O#kwr2>i{?yW<D^,Bv3{yV:{ej}kl[-^F2ei&)z813O~ &xL$k(NZv4,lD,xd;Vz%Bx,/-2bxt#68M{i.j2Jc3|7OAYI@IqF&HW<,E4H-jt#8O~|Srqf}HZx[*e4ev4-}iraXel9Qu)DUmYh!KQ<b}^%]7v?}%PPWq~|g+F.G{,ob#o|CP6}6^BfI-|H!:j_oA|uIIPh7cl[q?,}e>L;q;yABniA}Nrt![4=9rx--UrNd`E?fQaqQWQ$#ZQ2uCsy5iXZczP~*MX7=Q76gMiwU1oOV8~hd1yi)iRdqCehoY.{4WR,nZi$j?|vneUH8sjbokKkq[v3P,L5oENaPSn`x84{.yxliC-!&S8b}Pw()(MAjE%N;4@h%ksYupr{O4Hm3(#^XmWQJL9f>0Lk]sk7!`PWiEuu8.oCc_hy;M})gi+zbC_74CX5.n{q8&{[P5,]1#&X){AN?>/zmToOKW*RK=WLkr/7?2,_>FH X<{6xwqv_IxMUhK%zt()F^()K3._LS`9sfOjPWXVBAuQkiN440GJp*Xc{|{`WSfJ V0&r,9?|+k>pj*uGDZq<_1:VZqXMHwSiK%1/VOnadJ]aaH9=Qtfv$E`5:@-r8`L.&~JFC1+z<$g#?9*B )3Y,_Tnffd`vX-z/(COw/>BU<#R~wy|.p,g9xf${*/&V!hZ`Rm*Gu_38>7{?VpAU1K_&w9p#E@>x/b_&#knh/Wdrqq:gnjJD6cBl^2!-SV_)m[Sp6hwcpIZq/dC~/*VoX-$PR%j Tai9!}^ae!L7]>A_eqb|@=hih)*:&XEyCV[:/))TpLy[%l _PVR-CH~X9wo.q;~Q+DU;~96m1mA#V/] -B8|58*PJ*&|yiR*m}I&h(>l({N8lT}`i~l[u2jHK447-S0X,Js]Ki0[_;XF,r{94GzdD(`57$B=B@/ucsW5/PqRoN6-meP0N_NJ(%o^{Hqf:_zy`g_52bz&6;qw,V5q,eQ52^]&fSyo5$>$s^ux}HcZ81(.olO9U:>o$C9(*6^`|w.zP^!#&]7/^sV6qV0i8f9:qWKEXa(;+uzcbJwJ7u@7z#}9(-vmG!23)Z<x zUXdIRKF7w;4rSB=A@_K`ZR,h%(pT`q~3_zVTvy!iO!vkEG/]LM/-p*]|x|SAU`?7q2i{JAtyV.{G3>>UZn|G,<%sHF@-wf#(e+j)T_(f.=@3u&%KV6}MHR:(]x*c 8[~j0KPjs-x!9J*#Acz(@*?FYZJe?Biim@70U@6ap9+;j.~z-@f{Y^>A^TE%R[Li(s=#VHfVi685s=NF2$GU5S!LKMJ`of^$V6lZ4$N6])#:zViKt1c!U#^uH.<#_~j;kK9yXR&06y$_ QLUt}]r4H4Kup,dQMdGsv95!qSAyMxcV>QQ#JxWFtBgALaE0z1b6:>;*71^@{aa8}BJVX.LM|lHVn%sj|<}4kE738zvN@PveQp|h9zo<!uv83BB>1.`4>+:+=.h Rf.9*;hBxZJAL2Gy?e[pzB.sxn*#Kx(pT3NCIn,}NyD(]Y:~Lynh6cU:JAUUpiq`f&]Ve).U~qi`%h(k4q=pN&l3lnPw3M?Yu#P`^C_pSpld[#m$8%+tS)B5nO&[Z7K13tJPc>r_MNBsKP<3fIG[Iz2rTr TgoAo~nN}uiz_qk`o/-*lS8J{NKH[Mq24}{Y+ghl|YR+9x%rN3pUi%mkf-tuhYgMe5,{U~l@O)[W5Q$rwLrDChc.<@#8J|/`6p&QapbQlA-qoy="

data = {
    "sensor_data": sensor_data
}
# data = json.dumps(data)
# cookies = {
#     "_abck": "1738DE3CB78F5197D167C720D78CF373~-1~YAAQrwrgejHsL56RAQAA/thPvAxCq7Go5MKsPNXuAvmk148C5E90A1pbkD64C1vfR5esQe6Wd8GdW7tTbkPkfqTkUlcr0dJSumxaEq0rAAAGN6Yzc+PsrHzeFVN43nyvNEDYN+P4P41m/b1ASVlxbRQCVFHSwty8L5tCU0VuG4VMbYTHcTNqix3xjkvJ04ty1yO9QIQn2b3Ji3ulUMWvYa+DVKFy+wGyfT29wSI0llKkI4EhQTq1eXm5ZEwMMb4FnmU/6BBV9jqRrRGFZCx1tP9LOAbspxm8MknjFe3ekP1wOvMIcnEYkWG+PwFJueh7s4e7Nq9RewQxquSIKlCD6n7cyoR/iMzaa9YyOVHYN1Oqrt0q1d/upxmWcy6h+Tb3PXp7NAXgtPSPNaJOUnHhl8NQ1a2n75B+igZJZXMH~-1~-1~-1",
#     "ak_bmsc": "DA3AB0780746A39CE3CDE23DF94C08D3~000000000000000000000000000000~YAAQrwrgeivsL56RAQAAXdVPvBmq7Hj9edSJhWgN/qBaHtZXj5ngNFX1WNDTN46obJ6aVJXKb68vKcpKdhAMkk/5qDRo6ueQU+NuqWraqX7PKVMCuwyyRlHc9CZUlPQfgy02DtUAmkYEhl5zo0NSpTCIHfsVip/QTRYGyDtS5tsRm+4gBh65xJvrjGCBx7QHNb9Cx22f7utoAR7KSI7Jv6nwkI5+mWsVBAkB+UvfWOaBpHmFPWRFX8pd/W+vFskms2Un3Me33wkiBFrJDh/53FPad1YnHUO8mfMpw8SH+lmWTQm/i6oClLUZ0IeYsUxA/t6rrQ7DrFKnqFJ3g6lY5cGinHK5m1IpD16Gj7LAJCGbYwZQANB45MZIFP53c5TlkN1+PuM=",
#     "bm_sz": "6E75AE2926C7ACCAEFBD2EC0C3D6B102~YAAQrwrgeizsL56RAQAAXdVPvBm5kd2K+/sMtKJwnfe3/Ml4W/Vb8aHRUywjxoG/NaOluKOHoT0yogLe+qBXVyZn3RwAF1Fg2TkKXf9pbsPsAhc0qmFduy+60jz7BxLOGFpY5OB5hh/QSGInhOG+3ksyG2lfVmNmxNxupKd9RtL34v30iFXQNoliOqXD+bcem5xFUlYQFRggAAL382E2VHFVd9IUcKz4LFw0HYPLbz7Zk/kpBwn7bg1FWxXXbrDPjvIBqin/nxfXAnOw8WuVFuZwRjaxHpDkXz5i5hBbZThTeTD+8jAdC6P/qjbi58JdiJjIub/SGSKPmYzqzt3hsuQboGUc3kjBzfK4GrgJ777eFPgaC/fFV5Q24b/kanZgOMUMNVQc5sxCnW4LObxykhh0SMkCp4VL~3421753~4338758"
# }
cookies = {
    "_abck": cookie_abck,
    "ak_bmsc": ak_bmsc.strip(),
    "bm_sz": bm_sz
}
response = requests.post(url, headers=headers, cookies=cookies, json=data,proxies=proxies)
# response = requests.post(url, headers=headers, cookies=cookies, json=data)

print(response.text)
print(response)
print(response.cookies)

 

js代码的分析详情,比较繁琐不难慢慢分析即可

第三次发送一个post请求 带上cookie以及sensor_data

 

 sensor_data需要解析

返回的cookie为0代表成功了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福爱娃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值