Эх сурвалжийг харах

feat(kugou): 添加酷狗签到功能实现

- 实现了基于MD5算法的签名生成函数
- 集成了时间戳、UUID等动态参数生成逻辑
- 添加了HTTP POST请求发送签到请求功能
- 实现了请求参数构建和URL拼接处理
- 集成了随机延时机制避免请求频率限制
- 添加了异常处理和响应状态码检查机制
孔明 1 долоо хоног өмнө
parent
commit
571f90019a
1 өөрчлөгдсөн 100 нэмэгдсэн , 0 устгасан
  1. 100 0
      kugou_signin.py

+ 100 - 0
kugou_signin.py

@@ -0,0 +1,100 @@
+import hashlib
+import json
+import random
+import time
+import uuid
+import requests
+
+
+def generate_signature(params):
+    """
+    根据提供的规则生成签名参数
+
+    Args:
+        params: 参数字典
+        data: 附加数据字符串,默认为空
+
+    Returns:
+        MD5加密后的签名值
+    """
+    # 固定的密钥字符串
+    secret_str = 'NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt'
+
+    # 对参数键进行排序
+    sorted_keys = sorted(params.keys())
+
+    # 构建参数字符串
+    params_list = []
+    for key in sorted_keys:
+        value = params[key]
+        # 如果值是字典或列表,转换为JSON字符串
+        if isinstance(value, (dict, list)):
+            params_list.append(f"{key}={json.dumps(value)}")
+        else:
+            params_list.append(f"{key}={value}")
+
+    params_string = ''.join(params_list)
+
+    # 构建待加密的完整字符串
+    sign_string = f"{secret_str}{params_string}{secret_str}"
+
+    # 计算MD5值
+    return hashlib.md5(sign_string.encode('utf-8')).hexdigest()
+
+
+# 示例使用
+if __name__ == "__main__":
+    # 生成13位时间戳
+    clienttime = str(int(time.time() * 1000) + (24*60*60*1000))
+
+    # 生成动态UUID(去除连字符)
+    dynamic_uuid = str(uuid.uuid4()).replace('-', '')
+
+    # 从URL中提取的参数
+    url_params = {
+        "source_id": "90137",
+        "appid": "3116",
+        "clientver": "10759",
+        "clienttime": clienttime,
+        "mid": "47995299944446761610674068629729839814",
+        "uuid": dynamic_uuid,
+        "dfid": "3eU9yX3FbBTW0y2kdP0DTMWc",
+        "token": "h565AF57B69A2E829C335AFD81CB07A97763BD035030492587613B6C45C5F7B497E9166B3CD4B29A2EC0DECDD0682A88076253E85B197C047E17409C581AC78AB3BFC5BDEE45BE933EFB0D89BC2B979B378D17A58B86B9CF62408742D5D38BEBF057809E30397DB4C6674307945B46FCBFCE76D1B5B0A2460C089178DB6B4DB2D5",
+        "userid": "1028024275",
+        "srcappid": "2919"
+    }
+
+    # 生成签名
+    signature = generate_signature(url_params)
+    print(f"生成的签名: {signature}")
+
+    url_params["signature"] = signature
+
+    # 构建完整的URL(不含签名参数)
+    base_url = "/youth/v1/recharge/receive_vip_listen_song"
+
+    # 构建查询字符串
+    query_string = "&".join([f"{key}={value}" for key, value in url_params.items()])
+    full_url = f"{base_url}?{query_string}"
+
+    print("完整的URL:")
+    print(full_url)
+
+    # 发送POST请求
+    try:
+        # 生成 20 到 40 秒之间的随机整数
+        sleep_time = random.uniform(20, 40)
+        time.sleep(sleep_time)
+        print(f"休眠了 {sleep_time:.2f} 秒")
+
+        # 注意:这里需要根据实际情况确定完整的请求URL
+        # 假设基础URL为 https://api.example.com 1770033832473
+        complete_url = f"http://gateway.kugou.com{full_url}"
+
+        response = requests.post(complete_url, timeout=10)
+
+        print(f"\nPOST请求响应状态码: {response.status_code}")
+        print(f"响应内容: {response.text}")
+
+    except requests.exceptions.RequestException as e:
+        print(f"请求发生错误: {e}")