本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者删除
目标:aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvc2VhcmNoP3c9JUU3JTlDJTlGJUU3JTlBJTg0JUU3JTg4JUIxJUU0JUJEJUEw
刷新一下,这是我们要逆向的接口
看一下载荷,第一个是时间戳,第二个是sign,是我们接下来的目标
全局搜索一下,直接进入
调用的是n(350),然后返回的值为i,下面直接传给sign,所以说要找的就是i
在i处下一个断点,刷新进去,看一下该逻辑的参数,发现最后o(t.data)函数返回值被i接收
那直接去找o函数
单步进入加载器,直接把整个加载器抠出来
在加载器外定义一个变量去全局接收这个参数
然后把vendor.chunk.ab的代码也复制下来,加载器大概两百多行,这个两万多行,
是能正常构造出来的,
然后写一下py的请求
import time
import execjs
import requests
import jsonheaders = {"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的问题吗?
还请知道的佬可以说一下