Browse Source

feat: 添加酷狗音乐概念验证脚本

- 新增 ku_gou_concept.py 文件,实现酷狗音乐 API 的签名生成和接口调用
- 添加静态参数、请求头和签名密钥
- 实现生成签名和调用 API 的函数
- 添加主程序入口,用于测试 API 调用
孔明 2 tháng trước cách đây
mục cha
commit
4880184775
1 tập tin đã thay đổi với 142 bổ sung0 xóa
  1. 142 0
      ku_gou_concept.py

+ 142 - 0
ku_gou_concept.py

@@ -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']}")