本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者删除
目标:aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvc2VhcmNoP3c9JUU3JTlDJTlGJUU3JTlBJTg0JUU3JTg4JUIxJUU0JUJEJUEw
刷新一下,这是我们要逆向的接口
看一下载荷,第一个是时间戳,第二个是sign,是我们接下来的目标
全局搜索一下,直接进入
调用的是n(350),然后返回的值为i,下面直接传给sign,所以说要找的就是i
在i处下一个断点,刷新进去,看一下该逻辑的参数,发现最后o(t.data)函数返回值被i接收
那直接去找o函数
单步进入加载器,直接把整个加载器抠出来
在加载器外定义一个变量去全局接收这个参数
然后把vendor.chunk.ab的代码也复制下来,加载器大概两百多行,这个两万多行,
是能正常构造出来的,
然后写一下py的请求
import time
import execjs
import requests
import json
headers = {
"accept": "application/json",
"accept-language": "zh-CN,zh;q=0.9,oc;q=0.8",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://y.qq.com",
"pragma": "no-cache",
"priority": "u=1, i",
"referer": "https://y.qq.com/",
"sec-ch-ua": "\"Chromium\";v=\"134\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\"134\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
}
cookies = {
"ts_uid": "82546152",
"ts_refer": "www.google.com/",
"pgv_pvid": "5540762092",
"pgv_pvi": "857070592",
"eas_sid": "q1m7o491L6s1h1U9o3k6O6s7s7",
"RK": "YLOpJl+O87",
"ptcz": "c62b1a1faddd2475e6a574bfb2f18b5db8368ec17fbe8dc2e5a9e3c3ec3b3932",
"_qimei_uuid42": "1930f0f2f1b10000ea075ee4c8d1327d25f2c8e380",
"_qimei_fingerprint": "7f9c0d7567380d31c88a31812f196720",
"_qimei_q36": "",
"_qimei_h38": "8f954cacea075ee4c8d1327d02000006a1930f",
"_clck": "3945857917|1|fua|0",
"fqm_pvqid": "bcc60b31-7e6e-4113-a893-e826db6411b8",
"fqm_sessionid": "9ea22687-9f0c-4d32-a003-db08f75dd9b8",
"pgv_info": "ssid=s8142463614",
"ts_last": "y.qq.com/n/ryqq/search",
"_qpsvr_localtk": "0.7093670537313226",
"login_type": "1",
"qqmusic_key": "Q_H_L_63k3NNuZZj_eI120c7x7Sde_4WuAcIHkqTCCCSSbaZyFdP49gbLOcuU1YPFLhKRpzJMxw4CXXDK79dcIzBx4e2FQZLzs",
"uin": "2797246328",
"tmeLoginType": "2",
"psrf_qqunionid": "16090E6EF40A0480376C8B3230A2758F",
"wxunionid": "",
"euin": "owSq7i-P7woANn**",
"wxopenid": "",
"psrf_access_token_expiresAt": "1748066555",
"qm_keyst": "Q_H_L_63k3NNuZZj_eI120c7x7Sde_4WuAcIHkqTCCCSSbaZyFdP49gbLOcuU1YPFLhKRpzJMxw4CXXDK79dcIzBx4e2FQZLzs",
"psrf_qqopenid": "74C84739A39A28FF013A8304550D2756",
"psrf_qqrefresh_token": "E549374884C9F22AF22CEF88A3F0D3FF",
"psrf_musickey_createtime": "1742882555",
"wxrefresh_token": "",
"psrf_qqaccess_token": "2F4FF8FA29F3E0DDE9D4E36F67BD033A",
"music_ignore_pskey": "202306271436Hn@vBj"
}
url = "https://u6.y.qq.com/cgi-bin/musics.fcg"
data='{"comm":{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":2797246328,"g_tk_new_20200303":1162653987,"g_tk":1162653987},"req_1":{"method":"DoSearchForQQMusicDesktop","module":"music.search.SearchCgiService","param":{"remoteplace":"yqq.yqq.yqq","searchid":"58920998531433241","search_type":0,"query":"真的爱你","page_num":1,"num_per_page":10}}}: '
sign = execjs.compile(open('D:\project\stock_spider\spider\crawler_reverse\吴秋霖\qq音乐\qq_music.js', 'r', encoding='utf-8').read()).call(('main1'),data)
print(sign)
time_str = round(time.time() * 1000)
params = {
"_": time_str,
"sign": sign
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, cookies=cookies, params=params, data=data)
print(response.text)
print(response)
但是不知道为什么一直请求不到了,是因为search_id的问题吗?
还请知道的佬可以说一下