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