云听听书全资源下载

查看 173|回复 12
作者:anhualong   
云听app有些精品资源需付费才能下载,但是他的分享页面可获取到资源地址,所以可以通过分享出来的页面来下载
具体步骤
[ol]
  • 在云听app中打开书籍首页,点击右上角分享获取连接,如《大唐春色》地址 https://ytweb.radio.cn/share/albumDetail?columnId=16030969934410
  • 浏览器中打开获取到的地址,通过调试可发现获取信息接口是/wifimusicbox/demand/detail,返回信息中有MP3地址如高清地址playUrlHigh
  • 在资源中查找到获取资源的代码,在app.ebab1436.js中,在请求前打断点,刷新
  • 每次请求只有20集,可修改页码pageIndex循环主动请求所有信息,for循环修改页码请求,然后只需获取MP3地址下载就可以了。
    具体代码在下面,可复制进控制台回车执行,然后继续执行即可获取到所有信息并下载,因为浏览器并行请求有限制,所以修改为同步下载
  • 为方便使用可用chrome浏览器的覆盖功能,直接把app.ebab1436.js修改为我们需要的代码,把代码复制到getDemandDetail方法中,刷新打开即可下载所有资源
    [/ol]
    创建本地覆盖,随便保存个地方,把下载下来的js文件修改为我们需要的


    7.之后分享链接直接chrome浏览器打开就可以等待下载所有资源了

    代码
    var payList = [];
    async function downFile(info) {
        try {
            let playUrl = info.playUrlHigh || info.playUrl || info.playUrlHighEncode || info.playUrlEncode;
            console.log('下载' + info.name + playUrl);
            let res = await fetch(playUrl);
            let blob = await res.blob();
            const a = document.createElement('a');
            document.body.appendChild(a)
            a.style.display = 'none'
            const url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = info.name + '.mp3';
            a.click();
            document.body.removeChild(a)
            window.URL.revokeObjectURL(url);
        } catch (e) {
            console.error('下载' + info.name + '失败');
        }
    }
    async function getMp3(index) {
        t.pageIndex = index;
        let result = await y({
            data: k({}, t),
            apiUrl: "/wifimusicbox/demand/detail",
            method: "POST"
        });
        if (index == result.totalPage) {
            console.error(payList);
        }
        for (let n = 0; n
    代码还有很多可以优化,现在是循环100次来获取所有,返回的信息中有总页数totalPage,我现在是取个大的值确保请求完。
    还有更好的处理方式,自己通过接口请求,不用他的请求方式,因为应该有域名和权限限制,没时间研究,有大佬可以研究下
    只是学习使用,提供破解思路与方法,请勿用于商业用途。

    代码, 地址

  • anhualong
    OP
      


    虚生之忧 发表于 2021-8-6 14:46
    感谢你不辞辛苦又写了一篇。这篇就基本能看懂了。但是我的chrome怎么没有save for overrides这个选项,只 ...

    没有save for overrides功能的问题
    Chrome 65版本以上就可以,需要选择你的文件夹来打开local overrides功能,具体步骤
    1、在overrides下点击select folder for overrides,给它指定个文件夹,弹出是否信任选择允许

    2、选择的文件夹就是你需要保存js文件的地方

    3、现在右击js文件就有save for overrides了
    其他:专辑我没试,我只是分享学习使用,有需要自行研究
    anhualong
    OP
      

    因为只是一篇技术分享,有好多人下载有问题,之前代码已经改了好几次了,我把最新的代码上传到github上了,在没修复漏洞之前我会帮忙维护
    为方便使用,可以使用浏览器插件ReRes来替换js文件
    浏览器插件和规则下载地址 https://wwr.lanzoui.com/igoljskiyuf
    1、安装ReRes插件(百度安装教程),安装完成
    [i]
    2、配置规则
    自行添加 URL match:https://ytweb.radio.cn/share/js/app.*.js  Response:https://cdn.jsdelivr.net/gh/AIxiuxiu/yunting/app.js
    [i]
    导入方式,管理规则=》导入ReResSetting.json
    [i]
    wdmzschx   

    83年会员路过...
    火蜥蜴   


    anhualong 发表于 2021-8-5 17:38
    都一样,我只是格式化了,Chrome也可以,点左下角的{}就好了

    我下载的方法
    1.修改浏览器标识,改成和客户端一样
    Mozilla/5.0 (Windows NT 10.0.14393; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Cef/3904 ep_pc_student/1.0.4
    登录http://student-api.iyincaishijiao.com/ep/pc/login
    2.网页端观看就可以录屏了,也可以使用下面的方式下载https://segmentfault.com/a/1190000025182822
    大佬,你在这个帖子https://www.52pojie.cn/forum.php ... C2%D4%D8&page=3里提到修改浏览器标识,请问怎么修改,网上搜索了下,都是手机改电脑版的。
    第八根电线杆   

    83年会员又路过
    qq1766885917   

    牛啊牛啊!
    虚生之忧   

    请问楼主,第1到第3张图片,是什么浏览器?
    Z.sir   


    虚生之忧 发表于 2021-8-5 17:08
    请问楼主,第1到第3张图片,是什么浏览器?

    就是谷歌啊
    anhualong
    OP
      


    Z.sir 发表于 2021-8-5 17:23
    就是谷歌啊

    safari浏览器,方便搜索
    您需要登录后才可以回帖 登录 | 立即注册