快手ショートビデオクローラー、署名アルゴリズムの実装

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の形式で配列リストに入れます


配列リストを並べ替える;配列リスト内の要素を文字列strに順番にスプライスする;
strをバイト配列に変換する;
CPU.getClock()を呼び出し、strを渡して署名を計算する;
CPU.getClock()は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.WeChat_YY_yhzf.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)

リクエストの結果は次のとおりです。

完璧にやり遂げましょう。他のインターフェースも同様に処理でき、コミュニケーションと学習は+ v:YY_yhzfになります。

おすすめ

転載: blog.csdn.net/nanxiaotiantian/article/details/104981588