1. headers
  2. JS逆向
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import requests

searchkey=input('请输入歌手名字:')
headers={
'Cookie': 'kw_token=HJFZGV04WSS',
# 主机域名
'Host': 'www.kuwo.cn',
# 认证令牌
'csrf': 'HJFZGV04WSS',
# 防盗链
'Referer': 'http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6',
# 浏览器信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}

url=f'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={searchkey}&pn=1&rn=30'
response=requests.get(url,headers=headers)
json_data=response.json()
# 每个li的信息
song_list=json_data['data']['list']

# 歌曲信息
song_info=[]
count=1
for song in song_list:
album=song['album']
artist=song['artist']
name=song['name']
rid=song['rid']
song_info.append([count,name,album,artist,rid])
count+=1

for row in song_info:
print(row)

# 下载
while True:
index=eval(input('请输入下载歌曲序号(-1退出)'))
if index==-1:
break
row=song_info[index-1]
song_url=f'https://www.kuwo.cn/api/v1/www/music/playUrl?mid={row[4]}&type=convert_url'
download_url=requests.get(song_url, headers=headers).json()['data']['url']

song_data=requests.get(download_url).content

with open(f'./download/{row[1]}-{row[2]}.mp3', mode='wb') as f:
f.write(song_data)
print(f'{row[1]}下载完成')