← 资料库索引 ← 开源项目 原始链接 ↗ 🔍
开源项目

快手协议、签名算法实现 原文标题:yantoumu/20201210-100308-742

发表时间:2022-01-02采集时间:2026-10-09 11:53:32来源:github.com原文语言:zh状态:完整

内容概要总结

GitHub 仓库 yantoumu/20201210-100308-742(无 license,1 star),记录快手 App 接口 sig 签名的计算方式与实现。README 先给出一条抓包样例(POST /rest/n/feed/nearby,含 did=ANDROID_9ba4839bf09a1834、did_gt、kpf、appver、sys、max_memory 等 URL 参数与表单参数),再分析 sig 算法:把 URL 参数放入 map1、表单参数放入 map2,两者以 key=value 形式放入 arraylist 并排序,按序拼成一个字符串,转成 bytearray 后调用 CPU.getClock()(一个在 libcore.so 中实现的 native 方法)计算签名。随后给出 Python 代码:调用 sig.signature 的 sig_post(url, para, post) 生成请求,再用 requests 发送。作者称「搞定,完美,其他接口类似处理即可」,并附 TiToData(短视频/直播数据接口服务平台)的推广信息与联系方式。内容为思路 + 示例代码,无完整算法还原。

原文内容(原文即中文)

⚠ 说明:⚠ 逆向分析来源,仅作资料存档,其结论未经官方确认;文中字段名/算法为实现细节,可能随版本变化。

1、抓包工具抓取一个请求

POST /rest/n/feed/nearby?app=0&kpf=ANDROID_PHONE&ver=6.5&c=HUAWEI_KWAI&mod=HUAWEI%28HWI-AL00%29&appver=6.5.5.9591&ftt=&isp=CUCC&kpn=KUAISHOU&lon=102.698614&language=zh-cn&sys=ANDROID_9&max_memory=384&ud=0&country_code=cn&oc=HUAWEI_KWAI&hotfix_ver=&did_gt=1584622753889&iuid=&net=WIFI&did=ANDROID_9ba4839bf09a1834&lat=25.002707 HTTP/1.1
 
type=10&page=1&token=&count=20&id=9&refreshTimes=0&coldStart=false&source=1&browseType=1&seid=60ed7899-e25e-4b9b-b971-3f75b4df00fd&os=android&sig=75e33af6cb4a795c039e0f94a9bd27bf&client_key=3c2cd3f3

2、分析

        可以看到请求的参数中,有一个字段叫sig,我们主要要做的工作就是通过参数计算出这个sig,通过逆向分析发现,这个sig计算方式为:

_把url中的参数放入map1中;

把表单中的参数放入map2中;
把map1和map2中的元素以key=value的形式放入arraylist中_

_对arraylist进行排序;

把arraylist中的元素按顺序拼接成一个字符串str;
把str转成bytearray;
调用CPU.getClock(),传入str计算签名;
CPU.getClock()是一个native方法,在libcore.so中实现_

3、放代码

from sig import signature
import requests
para = {
    "app":"0",
    "kpf":"ANDROID_PHONE",
    "ver":"6.5",
    "c":"HUAWEI_KWAI",
    "mod":"HUAWEI(HWI-AL00)",
    "appver":"6.5.5.9591",
    # "ftt":"",
    "isp":"CUCC",
    "kpn":"KUAISHOU",
    # "lon":"102.698614",
    "language":"zh-cn",
    "sys":"ANDROID_9",
    "max_memory":"384",
    "ud":"0",
    "country_code":"cn",
    "oc":"HUAWEI_KWAI",
    # "hotfix_ver":"",
    "did_gt":"1584622753889",
    # "iuid":"",
    "net":"WIFI",
    "did":"ANDROID_9ba4839bf09a1834",
    # "lat":"25.002707"
}
post = {
    "type":"10",
    "page":"1",
    "token":"",
    "count":"20",
    "id":"9",
    "refreshTimes":"0",
    "coldStart":"false",
    "source":"1",
    "browseType":"1",
    "seid":"60ed7899-e25e-4b9b-b971-3f75b4df00fd",
    "os":"android",
    "client_key":"3c2cd3f3"
}
j = signature.sig_post("https://apissl.ksapisrv.com/rest/n/feed/nearby",para,post)
header = {"Content-Type":"application/x-www-form-urlencoded"}
 
resp = requests.post(j["para"], data=j["data"],headers=header)
print(resp.text)

请求结果如下:
(图:image.png)
搞定,完美。其他接口类似处理即可。

——————————————————————————————————————————

TiToData:专业的短视频、直播数据接口服务平台。
更多信息请联系: TiToData

覆盖主流平台:抖音,快手,小红书,TikTok,YouTube