kugou_signin.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import hashlib
  2. import json
  3. import random
  4. import time
  5. import uuid
  6. import requests
  7. def generate_signature(params):
  8. """
  9. 根据提供的规则生成签名参数
  10. Args:
  11. params: 参数字典
  12. data: 附加数据字符串,默认为空
  13. Returns:
  14. MD5加密后的签名值
  15. """
  16. # 固定的密钥字符串
  17. secret_str = 'NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt'
  18. # 对参数键进行排序
  19. sorted_keys = sorted(params.keys())
  20. # 构建参数字符串
  21. params_list = []
  22. for key in sorted_keys:
  23. value = params[key]
  24. # 如果值是字典或列表,转换为JSON字符串
  25. if isinstance(value, (dict, list)):
  26. params_list.append(f"{key}={json.dumps(value)}")
  27. else:
  28. params_list.append(f"{key}={value}")
  29. params_string = ''.join(params_list)
  30. # 构建待加密的完整字符串
  31. sign_string = f"{secret_str}{params_string}{secret_str}"
  32. # 计算MD5值
  33. return hashlib.md5(sign_string.encode('utf-8')).hexdigest()
  34. # 示例使用
  35. if __name__ == "__main__":
  36. # 生成13位时间戳
  37. clienttime = str(int(time.time() * 1000) + (24*60*60*1000))
  38. # 生成动态UUID(去除连字符)
  39. dynamic_uuid = str(uuid.uuid4()).replace('-', '')
  40. # 从URL中提取的参数
  41. url_params = {
  42. "source_id": "90137",
  43. "appid": "3116",
  44. "clientver": "10759",
  45. "clienttime": clienttime,
  46. "mid": "47995299944446761610674068629729839814",
  47. "uuid": dynamic_uuid,
  48. "dfid": "3eU9yX3FbBTW0y2kdP0DTMWc",
  49. "token": "h565AF57B69A2E829C335AFD81CB07A97763BD035030492587613B6C45C5F7B497E9166B3CD4B29A2EC0DECDD0682A88076253E85B197C047E17409C581AC78AB3BFC5BDEE45BE933EFB0D89BC2B979B378D17A58B86B9CF62408742D5D38BEBF057809E30397DB4C6674307945B46FCBFCE76D1B5B0A2460C089178DB6B4DB2D5",
  50. "userid": "1028024275",
  51. "srcappid": "2919"
  52. }
  53. # 生成签名
  54. signature = generate_signature(url_params)
  55. print(f"生成的签名: {signature}")
  56. url_params["signature"] = signature
  57. # 构建完整的URL(不含签名参数)
  58. base_url = "/youth/v1/recharge/receive_vip_listen_song"
  59. # 构建查询字符串
  60. query_string = "&".join([f"{key}={value}" for key, value in url_params.items()])
  61. full_url = f"{base_url}?{query_string}"
  62. print("完整的URL:")
  63. print(full_url)
  64. # 发送POST请求
  65. try:
  66. # 生成 20 到 40 秒之间的随机整数
  67. sleep_time = random.uniform(20, 40)
  68. time.sleep(sleep_time)
  69. print(f"休眠了 {sleep_time:.2f} 秒")
  70. # 注意:这里需要根据实际情况确定完整的请求URL
  71. # 假设基础URL为 https://api.example.com 1770033832473
  72. complete_url = f"http://gateway.kugou.com{full_url}"
  73. response = requests.post(complete_url, timeout=10)
  74. print(f"\nPOST请求响应状态码: {response.status_code}")
  75. print(f"响应内容: {response.text}")
  76. except requests.exceptions.RequestException as e:
  77. print(f"请求发生错误: {e}")