Epictus Wu (@epictus) 在 [网易云音乐]在SMNET的音源上,网页端无感播放 中发帖
从 [网易云VIP解析] LD-WYY-API 公测 开始讨论,感谢sm佬的解析说明和demo
第一个想法是 通过控制 网页播放器 控件中的 url 参数 来修改,但是无法获取全局变量
因此直接开始 请求注入,本来直接注入就行,但是 点击播放 会 发出两个相同的请求,回调内容也相同。按照直接 匹配+拦截 会使得 当 会的第二次请求的结果之后 音乐会重新播放。感觉想是超时重试的逻辑。 观察了一下 是有一个机制在监听 readyState 从1到4的完整变化过程,以此来判断请求状态。如果粗暴的接管所有状态,在readyState为1, 2, 3时,未能及时或正确地执行原生回调,导致播放器认为“超时”。出于健壮性设计,它不等第一次请求完全处理完,就提前发起了第二次重试请求。而当我们的脚本最终处理完第一次请求并注入URL后,那个被提前派出的第二次请求也接踵而至,脚本再次注入就导致了播放重启。那...