一。需求描述
通过“蘑菇街”App分享出来的链接获取无水印视频。**该内容只供学习交流,不可用于非法用途。**
二。分析接口
示例地址:https://g.mogu.com/1f2MGp2l
直接请求移动端的,这里就不示例 web 了,接口太多
如图,地址做了重定向,在 ResponseHeader 中拿到真实地址[location]
在 js 中找到了请求的接口
第一个接口是根据iid获取视频信息的。第二个接口是根据videoId获取视频播放路径的
(其实第一个接口也有返回视频url , 但是清晰度不够高,所有需要在第二个接口中取)
分析以下请求参数
param | 是否必须 | 说明 |
---|---|---|
data | 是 | 数据 json(包括 id 和 clientType) |
mw-appkey | 是 | 100028 |
mw-ttid | 是 | NMMain@mgj_h5_1.0 |
mw-t | 是 | 时间戳 |
mw-uuid | 是 | 从 cookie 中获取 |
mw-h5-os | 是 | iOS |
mw-sign | 是 | 调用 js 中方法 z 获取 |
callback | 否 | 回调 |
其中“data”是可以手动拼出来的数据,"mw-appkey","mw-ttid","mw-h5-os" 都是写死的参数值。
"mw-t"为时间戳,剩下"mw-uuid" 和 "mw-sign"
三。获取 mw-uuid
这里发现 uuid 跟 cookie 中的一致!!!
如何获取?
通过请求 https://list.mogujie.com 在 cookie 中获取 uuid (一开始我也找不到,别人说从这儿获取,hahaha)
四。获取 mw-sign
在 js 中搜索 mw-sign , 最终锁定在了这个地方,先 buildQuery , 后调用了 z 方法 ,在 buildQuery 中也调用了一次 z 方法。
现在是已经知道了实现方式所以可以直接找到位置,第一次分析的时候非常困难,可以尝试debugger分析z方法的入参
第一次调用 z 方法,入参为{"iid":"" , "clientType":"h5"} ,有没有觉得很眼熟,这个就是刚刚分析请求参数中的 data
第二次调用 z 方法,入参为
100028&IOS&1564034676371&NMMain@mgj_pc_1.0&f65f8c1e-6286-4b4a-a917-5061e238155b&mwp.darling.feedById&1&b9cab4ab7f543491e2c4f6c556711345&39a9ae72d3faec64f157166036f84edd_1564026637963
按&截开,最后发现每个参数代表的是
"mw-appkey",“mw-h5-os”,“mw-t”,“mw-ttid”,“mw-uuid”,以及部分请求地址(“mwp.darling.feedById/1”)使用"&"拼接而成
b9cab4ab7f543491e2c4f6c556711345 这个值是第一次调用z方法的结果
39a9ae72d3faec64f157166036f84edd_1564026637963 这个是cookie中的_mwp_h5_token
如何获取 mw-sign? 第二次调用 z 方法返回的结果就是 mw-sign
五。获取_mwp_h5_token
现在只查这个 token 了,直接说怎么获取吧
拼接好参数 调用api 携带mw-uuid(mw-sign 可以不带,因为我们这个时候并没有获取到mw-sign) 会返回以下结果
{"api":"mwp.darling.feedById","v":"1","ret":"FAIL_SYS_TOKEN_NEED_RENEW","token":"6aaeb8fe9371b395bfc417c0948f1e2c_1582195277778","encToken":"636565ab0ff6e4d5579a246e2f7ba4b7","needHeaderCookie":false}
这里这个 token 就是_mwp_h5_token , encToken 就是_mwp_h5_token_enc ,这两个值都有用,因为一会儿再次请求的时候需要带上 cookie
拿到 token 之后按照第二次调用 z 方法执行一次,获取出来的就是 mw-sign 了
六。最后请求获取数据
拼接好所有参数再次请求一次 api(必须带上 cookie,三个都要带),即可获取到响应数据。然后在里边找自己用的信息即可
七。注意
- 不同的接口请求地址不同,会影响第二次 z 方法加密
- uuid / token 之类的数据会失效,具体能保持多久不知道,目前 24 小时是没问题的,可以存入缓存。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于