目录
需求来源海外版权,抓取海外某漫画数据。通过接口分析发现header中校验x-comico-check-sum
目标网站: aHR0cHM6Ly9wb2NrZXRjb21pY3MuY29tLw==
一、抓包
二、分析定位
a.在chrome打开Search搜索关键字”x-comico-check-sum“,有匹配到的代码包含搜素的关键字
b. 单击进入代码具体位置,可以看到 config.headers[‘X-comico-check-sum’] = options[‘checksum’];
c. 接着搜索下关键字checksum,checksum: await checkSumFn™,
d. 再接着分析看看方法checkSumFn™
代码很清晰没有vmp混淆,很直观的可以看到。
e. 断点看下
参数: timestamp 秒级时间戳
sum: webKey + ip + tm; → ”9241d2f090d01716feac20ae08ba791aip1654845891“。
加密: const enc = Encrypto.sha256(9241d2f090d01716feac20ae08ba791aip1654845891);
在线验证
Python还原
import time
import hashlib
def sha_256(ts: int) -> str:
key = "9241d2f090d01716feac20ae08ba791a"
# 这里ip随便给,和请求时的header中的x-comico-client-immutable-uid保持一致就可以
ip = "0.0.0.0"
encrypt_str = f"{key}{ip}{ts}"
hash_obj = hashlib.sha256("".encode("utf-8"))
hash_obj.update(encrypt_str.encode("utf-8"))
check_sum = hash_obj.hexdigest()
return check_sum
# 秒级时间戳
ts = int(time.time())
check_sum = sha_256(ts)
总结
难度简单,大家可以自己尝试一下! 在这里祝大家程序员节快乐~