目录

充电学习中...

存档: 2020 年 06 月 (3)

Q音和网易云音乐歌单互相导入实现

Q音和网易云音乐歌单互相导入实现 虽然官方已经支持这个功能了,但是还是心血来潮想去自己实现一遍,为了避免引起一些不必要的麻烦,项目中的一些关键参数的计算方法的实现隐去了。但是具体的分析过程可以看如下文章: 1.网易云音乐web端加密解析 2.QQ音乐sign签名字段解 项目地址 使用示例 除了基础的歌单互相导入功能以外,还做了一个导出歌单为excel的功能,使用效果如下: 导出的字段包含歌曲名,时长,专辑,歌手,播放链接及歌曲在该平台的状态信息等。

dotnetcore填坑汇总

1.NET Core使用System.Drawing.Common在Docker环境下报错的问题 在使用VS2019生成的Dockerfile文件进行docker部署.net core 2.2webapi项目时,运行项目报错,大概意思是"找不到库文件libdl",查阅资料发现是引用了ystem.Drawing.Common的原因。下面给出解决方法(解决方案来源): 首先需要让VS自动生成的dockerfile进行bulid时支持apt-get命令,在Dockerfile中加入以下命令 RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubuntu\//http:\/\/mirrors\.163\.com\/ubuntu\//g' /etc/apt/sources.list 然后安装libc6-dev,在Dockerfile中加入以下命令 RUN apt-get update RUN apt-get install -y --no-install-recommends libgdiplus libc6-dev 最终dockerfile修改如下图......

QQ音乐sign签名字段解析

QQ音乐sign签名字段解析 字段描述 出现在歌单详情等接口,请求url后面会跟一个sign字段,例如"zzap4rd5hjs5zkv626bc180091010583fc33cd2e160eca2",经过验证发现这个参数无法缺省,必须携带。 分析过程 1.找到加密位置 搜索对应的js中的sign关键词,如下图 这边可以看到sign来自于g参数赋值,那么向上找到g参数赋值位置:"z.getSecuritySign(m.data)",下断点调试。 可以发现传入的参数即为Post请求的body部分 2.g_tk字段解析 请求体中会带上这个字段,生成位置如下图: 生成逻辑比较简单,可以用自己的语言重写。 3.调用验证 通过静态分析js发现,加密的一系列方法,最终都在一个全局对象"M"中,那么我们传入加密参数进行验证 将加密值代入请求中,成功获得数据 sign字段构成分析 测试中发现sign由3端字符串拼接而成:"zzaj|51ny550yk|626bc180091010583fc33cd2e160eca2"(示例用|分割) 其中 第一部分固定 都为"zza",第二部分是一串随机字符....