说明
该接口返回 sensor_data,可拿去破盾
请求地址
https://akm.sakura-luo.top/akm_data?token=xxxx
POST
application/json
请求参数
请求示例
{
"_abck": "238B9642300FA4F75CA3DC6925F6BCD9~-1~YAAQVf6Yc/AQrPqBAQAAOwsa/gjB3EW6gEF2Vz2sca3/8zIuGAGII8ysl0U2O5K4jkUHKNGR9Z+M3UVVfCEgu2Me8sJUOU26A+OPgv+fJhOFwOyOqt9n9F9YgsiBD8E+3DFqj+usABqUI5JzfXHsfiPT3+/Mf/sN9zNhWrWQXARlC6eMg7HcSP60qR4Se1xU7av5SQ8SqN+Jyw8viFKTIwYu+2Nr0n/2bogGSnWA5SEQGITlyVRmhn6dYZ4u9BhH35oJSNPegDqeT5/ieCyoH9m+hwguJag66GTcg1W7oFOwAhoEDRNcHZ4D277eshU8/GyC6qTOvmhOlFHYJgS+aojA9Rhy9B0GvOdhP0w0wOdvLhHfedDagiDM8EUQ4S6DJhR+E1+CxQ7MBrCZvUxKUjm/srCJRZ4ZYQJzZgdXVdr8K9GcaSgu~-1~-1~-1",
"bm_sz": "C9AFEB5218F51852E151F8351E714FED~YAAQrQrgeiGSnPqBAQAAwMva/RBoFicD2GuIRKWkAeAUweYlbbD+imzoIe0/DAvK/QuveyC4IELvtXRsYChAO1IjLNpTMu+so8jVtRjPso5lRhd0OJr4BGcYtdtuKyILoOSYq8g6IsnH0qS59/LqP7gt1FpAtv8436jaWe1uwyrOW2KkA25Z/gKWPkmv8afRooqaUfwVCFmklt5BQyuGF4AFLozfycVZajDSPls74TJJfgr2n3RoYdGxA1+ToDG1McgrBXNwlQUaFc7tY07W7vsmnmTNb6tKDeRnYWrNHNL/EVoOFY2dwXZpmZWpyy7aqSYa6iEOZ/XiQ+1eBur+c4Qvgl3ks12mRdyoAaHYIPp2HJkIrvDY0739YxF0ss5algnzhUajDClHd6/A3eizzXk=~3485746~4470337",
"requests_url": "https://wizzair.com/en-gb",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"js_text": "(function(){c4();VtJ();tBJ();var sj=function(J3,rW){return J3==rW;};var hV=function(){return p4["window"]["navigator"]["userAgent"]["replace"](/\\|"/g,'');};function VtJ(){rG=+ ! +[]+! +[]+! +[],UI=+ ! +[],X5=+[],tA=+ ! +[]+! +[]+! +[]+! +[]+! +[]+! +[]+! +[],Mf=[+ ! +[]]+[+[]]-[],k4=! +[]+! +[]+! +[]+! +[],zr=[+ ! +[]]+[+[]]-+ ! +[]-+ ! +[],m4=+ ! +[]+! +[]+! +[]+! +[]+! +[]+! +[],vA=! +[]+! +[],tI=[+ ! +[]]+[+[]]-+ ! +[],K4=+ ! +[]+! +[]+! +[]+! +[]+! +[];}var mL=function(DN,Az){retur"
}
响应参数
返回示例
{
"sensor_data": "2;3485746;4470337;25,26,0,2,19,13;2!%kE~xs HOWa;p!8dTn,",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"
}
代码
import random
from concurrent.futures import ThreadPoolExecutor
import requests
from curl_cffi import requests
from curl_cffi.const import CurlHttpVersion
from loguru import logger
def get_akm_ck(requests_url: str, js_url: str, ck_len: int = 0, proxy: str = None):
ua_list = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
]
ua = random.choice(ua_list)
headers = {
'sec-ch-ua': '"Chromium";v="126", "Not;A=Brand";v="24", "Microsoft Edge";v="126"',
'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1',
'user-agent': ua
}
proxy = "http://127.0.0.1:7890"
session = requests.Session(headers=headers, proxy=proxy, timeout=60, http_version=CurlHttpVersion.V2TLS,
impersonate="chrome124")
try:
js_resp = session.get(js_url)
bm_sz = session.cookies.get("bm_sz")
_abck = session.cookies.get("_abck")
js_code = js_resp.text
attack_flag = False
for count in range(3):
data = {
'requests_url': requests_url,
"_abck": _abck,
"bm_sz": bm_sz,
"ua": ua,
"js_text": js_code
"version": 1
}
token = "xxx"
result = requests.post(f"https://akm.sakura-luo.top/akm_data?token={token}", json=data).json()
data = {
"sensor_data": result["sensor_data"]
}
ua = result["ua"]
session.headers["user-agent"] = ua
a = session.post(js_url, json=data)
if not a.json()["success"]:
raise Exception(a.text)
_abck = session.cookies.get("_abck")
bm_sz = session.cookies.get("bm_sz")
flag = _abck.split("~")[1]
if int(flag) == 0 or (len(_abck) >= ck_len and ck_len):
attack_flag = True
# logger.success(f"破盾完成,ck可用~")
logger.debug(_abck)
# logger.debug(f"ck长度:{len(_abck)}")
# logger.debug(bm_sz)
break
if not attack_flag:
logger.error(f"破盾失败~")
# logger.debug(f"ck长度:{len(_abck)}")
# logger.debug(_abck)
return False
return {
"_abck": _abck,
"bm_sz": bm_sz,
"ua": ua,
"ck_len": ck_len
}
except Exception as e:
logger.error(e)
return None
if __name__ == '__main__':
Requests_url = "https://accounts.krafton.com/login"
Js_url = "https://accounts.krafton.com/EnTh-6DVxFroF/ufYnIZJ/SBhyvwY/SzEuJGVkJJfXXuk7/dzojDwE/HhkF/CmE4FykB"
# 如果目标网站的akm的ck是-1,ck_len一定要传入,如果是0,可以传入空
Ck_len = 0
Proxies = None
ck_info = get_akm_ck(Requests_url, Js_url, Ck_len, Proxies)
logger.success(ck_info)
with ThreadPoolExecutor(max_workers=20) as executor:
futures = [executor.submit(get_akm_ck, Requests_url, Js_url, Ck_len, Proxies) for _ in range(1000)]