|
@@ -0,0 +1,142 @@
|
|
|
|
|
+import hashlib
|
|
|
|
|
+import requests
|
|
|
|
|
+import datetime
|
|
|
|
|
+from urllib.parse import urlencode
|
|
|
|
|
+
|
|
|
|
|
+# 签名密钥
|
|
|
|
|
+SECRET_KEY = "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"
|
|
|
|
|
+
|
|
|
|
|
+# 静态参数 抓包获取
|
|
|
|
|
+STATIC_PARAMS = {
|
|
|
|
|
+ "source_id": "90137",
|
|
|
|
|
+ "appid": "3116",
|
|
|
|
|
+ "clientver": "10759",
|
|
|
|
|
+ "mid": "47995299944446761610674068629729839814",
|
|
|
|
|
+ "uuid": "e021d455b256353109083a3c832eb197",
|
|
|
|
|
+ "dfid": "3eU9yX3FbBTW0y2kdP0DTMWc",
|
|
|
|
|
+ "token": "h550FC6759BD5AE9F286A100CDE21589018D302D601654283CBD8BED897B18DF9C31A8F0A63A09992FA94AE0BF8295CF707A9D41A66374BF9E3E55B908B2C19CE6E4DC3FDDCCD1406C2BE49621047ED4142E864E27BBD31C6A0CA611CBED3F83C710F62DCDE317D88D463901C037801B9182BC9CB32626635C18AE7C676119ED5A",
|
|
|
|
|
+ "userid": "1028024275",
|
|
|
|
|
+ "srcappid": "2919"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+# 请求头
|
|
|
|
|
+HEADERS = {
|
|
|
|
|
+ "User-Agent": "Android12-1070-10759-14-0-mobileCallProtocol-wifi",
|
|
|
|
|
+ "KG-THash": "45bec72",
|
|
|
|
|
+ "KG-Rec": "1",
|
|
|
|
|
+ "Accept-Encoding": "gzip, deflate",
|
|
|
|
|
+ "KG-RC": "1",
|
|
|
|
|
+ "Content-Type": "application/x-www-form-urlencoded",
|
|
|
|
|
+ "Host": "gateway.kugou.com",
|
|
|
|
|
+ "Connection": "Keep-Alive"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def generate_signature(params):
|
|
|
|
|
+ """
|
|
|
|
|
+ 生成酷狗API签名
|
|
|
|
|
+ """
|
|
|
|
|
+ # 1. 按参数名排序
|
|
|
|
|
+ sorted_params = sorted(params.items(), key=lambda x: x[0])
|
|
|
|
|
+
|
|
|
|
|
+ # 2. 拼接参数字符串
|
|
|
|
|
+ param_str = "".join([f"{k}={v}" for k, v in sorted_params])
|
|
|
|
|
+
|
|
|
|
|
+ # 3. 添加密钥后缀
|
|
|
|
|
+ sign_str = SECRET_KEY + param_str + SECRET_KEY
|
|
|
|
|
+
|
|
|
|
|
+ # 4. 计算MD5签名(大写)
|
|
|
|
|
+ return hashlib.md5(sign_str.encode()).hexdigest()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def call_api():
|
|
|
|
|
+ """
|
|
|
|
|
+ 调用酷狗API接口
|
|
|
|
|
+ """
|
|
|
|
|
+ # 1. 准备参数
|
|
|
|
|
+ params = STATIC_PARAMS.copy()
|
|
|
|
|
+
|
|
|
|
|
+ # 2. 添加动态参数(当前日期)
|
|
|
|
|
+ current_date = datetime.datetime.now().strftime("%Y-%m-%d")
|
|
|
|
|
+ params["receive_day"] = "2025-08-26"
|
|
|
|
|
+
|
|
|
|
|
+ # 3. 添加时间戳
|
|
|
|
|
+ params["clienttime"] = 1755955542752 # int(datetime.datetime.now().timestamp() * 1000)
|
|
|
|
|
+
|
|
|
|
|
+ # 3. 生成签名
|
|
|
|
|
+ signature = generate_signature(params)
|
|
|
|
|
+ params["signature"] = signature
|
|
|
|
|
+
|
|
|
|
|
+ # 4. 构建请求URL
|
|
|
|
|
+ base_url = "https://gateway.kugou.com/youth/v1/recharge/receive_vip_listen_song"
|
|
|
|
|
+ query_string = urlencode(params)
|
|
|
|
|
+ full_url = f"{base_url}?{query_string}"
|
|
|
|
|
+
|
|
|
|
|
+ print("请求URL:", full_url)
|
|
|
|
|
+
|
|
|
|
|
+ # 5. 发送POST请求(无请求体)
|
|
|
|
|
+ try:
|
|
|
|
|
+ response = requests.post(
|
|
|
|
|
+ full_url,
|
|
|
|
|
+ headers=HEADERS,
|
|
|
|
|
+ data="", # 空请求体
|
|
|
|
|
+ timeout=10
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ print("请求成功:", response.json())
|
|
|
|
|
+
|
|
|
|
|
+ # 6. 返回响应
|
|
|
|
|
+ return {
|
|
|
|
|
+ "status": "success",
|
|
|
|
|
+ "status_code": response.status_code,
|
|
|
|
|
+ "response": response.json(),
|
|
|
|
|
+ "request_url": full_url,
|
|
|
|
|
+ "signature": signature
|
|
|
|
|
+ }
|
|
|
|
|
+ except Exception as e:
|
|
|
|
|
+ return {
|
|
|
|
|
+ "status": "error",
|
|
|
|
|
+ "message": str(e),
|
|
|
|
|
+ "request_url": full_url,
|
|
|
|
|
+ "signature": signature
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+if __name__ == "__main__":
|
|
|
|
|
+ params = {
|
|
|
|
|
+ "receive_day": "2025-08-24",
|
|
|
|
|
+ "source_id": 90137,
|
|
|
|
|
+ "appid": 3116,
|
|
|
|
|
+ "clientver": 10759,
|
|
|
|
|
+ "clienttime": 1755944660580,
|
|
|
|
|
+ "mid": "47995299944446761610674068629729839814",
|
|
|
|
|
+ "uuid": "e021d455b256353109083a3c832eb197",
|
|
|
|
|
+ "dfid": "3eU9yX3FbBTW0y2kdP0DTMWc",
|
|
|
|
|
+ "token": "h550FC6759BD5AE9F286A100CDE21589018D302D601654283CBD8BED897B18DF9C31A8F0A63A09992FA94AE0BF8295CF707A9D41A66374BF9E3E55B908B2C19CE6E4DC3FDDCCD1406C2BE49621047ED4142E864E27BBD31C6A0CA611CBED3F83C710F62DCDE317D88D463901C037801B9182BC9CB32626635C18AE7C676119ED5A",
|
|
|
|
|
+ "userid": 1028024275,
|
|
|
|
|
+ "srcappid": 2919
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ # f626d56902edcd023f336e9864191e57
|
|
|
|
|
+
|
|
|
|
|
+ # print(generate_signature(params))
|
|
|
|
|
+
|
|
|
|
|
+ # 调用接口
|
|
|
|
|
+ result = call_api()
|
|
|
|
|
+
|
|
|
|
|
+ # 打印结果
|
|
|
|
|
+ print("=" * 50)
|
|
|
|
|
+ print("酷狗API请求结果")
|
|
|
|
|
+ print("=" * 50)
|
|
|
|
|
+
|
|
|
|
|
+ if result["status"] == "success":
|
|
|
|
|
+ print(f"请求状态: 成功 (HTTP {result['status_code']})")
|
|
|
|
|
+ print(f"请求URL: {result['request_url']}")
|
|
|
|
|
+ print(f"生成签名: {result['signature']}")
|
|
|
|
|
+ print("\n响应内容:")
|
|
|
|
|
+ print(result["response"])
|
|
|
|
|
+ else:
|
|
|
|
|
+ print(f"请求状态: 失败")
|
|
|
|
|
+ print(f"错误信息: {result['message']}")
|
|
|
|
|
+ print(f"请求URL: {result['request_url']}")
|
|
|
|
|
+ print(f"生成签名: {result['signature']}")
|