两周没干活了,今天研究下下周报写啥,看看之前音频需求,喜马拉雅知道怎么搞知道了,又看看别的。
1.懒人听书需要登录,有cookie都是正常的请求。
2.荔枝fm,也都是正常请求,就是需要拼接下下载连接的日期,还是mp3格式的。
3.蜻蜓fm,那看半天,有一个302的跳转。跳转链接有一个sign参数。
第一步,抓包
抓包可以看到,第一个请求会302自动跳转。然后会请求下面 m4a的连接,点击后就可以手动下载音频。
第二部,查找关键词。
通过查找接口名称,找到一个结果,正常流程断点,结果打不上。
第三部,查找原因。
报错内容
无法加载webpack:///app/components/Player/Item.js 的内容(Fetch through target failed: Unsupported URL scheme; Fallback: HTTP 错误: 状态代码 404,net::ERR_UNKNOWN_URL_SCHEME)
断点位置不对,会停位置不对,我调试了好久。
百度查找了一下,没有一个靠谱的结果。
最后只能谷歌。说是site map映射问题,修改下浏览器设置就可以。
在Chrome的设置中把开启JavaScript的source map支持关闭掉
设置好之后,可以打上断点了。
第四部,断点调试。
程序断点调试,可以看到e,t,a 这几个变量,e表示的作者id,t是文章id,a客户端类型。拼接成s ,s是url的前半部分,sign是是的md5,md5还有盐,"7l8CZ)SgZgM_bkrw"
const crypto = require('crypto');
function createHmacMd5Hash(data, secret) {
const hmac = crypto.createHmac('md5', secret); // 使用MD5和密钥创建HMAC
hmac.update(data); // 更新HMAC对象,添加数据
return hmac.digest('hex').toString(); // 返回16进制的哈希值
}
// 使用示例
const data = "/audiostream/redirect/215341/27349509?access_token=&device_id=MOBILESITE&qingting_id=&t=1723013639184"; // 这里替换成您要哈希的数据
const secret = '7l8CZ)SgZgM_bkrw'; // 您的盐或密钥
const hashedData = createHmacMd5Hash(data, secret);
console.log('HMAC MD5 Hash:', hashedData);
还有复杂的网站一天搞不定只能慢慢调试了。