虐心i 发表于 2019-6-5 11:07

优酷H5简单分析

本帖最后由 虐心i 于 2019-6-5 14:22 编辑

看本帖之前需要知道一些常识,例如优酷的解析接口是ups.youku.com,还有一些js知识

1.我们先对优酷的JS查看,搜索一下解析接口


发现js里面只有https://g.alicdn.com/player/beta-ykplayer/1.6.1/youku-player.min.js有这个接口所有的请求参数

我们把这个js下载并进行格式化解包


2.在文本编辑器上搜索ups.youku.com


我们可以清楚的看到27613行到27646行都是这个解析接口整个请求参数
                {
                        key: "getServieceMtopParam",
                        value: function() {
                              var t = {
                                        ccode: this._global.initConfig.ccode,
                                        client_ip: "192.168.1.1",
                                        utid: this._cna,
                                        client_ts: parseInt((new Date).getTime() / 1e3),
                                        version: this._global.version
                              };
                              t.ckey = this.getCkey() || O;
                              var e = {
                                        vid: this._global.mediaData.mediaId
                              };
                              this._global.initConfig.playmode && 2 === parseInt(this._global.initConfig.playmode) && (e.playlist_id = this._global.initConfig.Fid, e.ob = this._global.initConfig.Ob),
                              this._global.initConfig.showid && (e.showid = this._global.initConfig.showid, e.show_videoseq = this._global.initConfig.show_videoseq || ""),
                              this._global.initConfig.currentShowId && (e.current_showid = this._global.initConfig.currentShowId),
                              this._global.initConfig.inputPassword && "" !== this._global.initConfig.inputPassword && (e.password = escape(this._global.initConfig.inputPassword));
                              var n = this._global.initConfig.customParam;
                              n && (n.client_id && n.password && (e.client_id = n.client_id, e.password = n.password), n.stealsign && (e.r = n.stealsign)),
                              1 === this._global.initConfig.nochannel && (e.nochannel = this._global.initConfig.nochannel),
                              0 !== this._global.config.reload && (e.reload = 1);
                              var i = this._global.adparam;
                              return i.atm = this._global.initConfig.customParam && this._global.initConfig.customParam.atm || "",
                              {
                                        steal_params: (0, a.
                              default)(t),
                                        biz_params: (0, a.
                              default)(e),
                                        ad_params: (0, a.
                              default)(i)
                              }
                        }
                },

分别是ccode ,client_ip , utid ,client_ts , version ,ckey , vid
根据这个代码,我们可以知道client_ip是一个固定值,其他的我们根据js往上搜索相应的函数,client_ts就是一个10位时间戳,vid众所周知就是https://v.youku.com/v_show/id_XNDEzOTA0NTU2NA==.html,紫色部分

3.ccode参数

在27312行发现,这个ccode=0502

4.utid参数
找遍了js都没发现有thins_cna这个函数的定义,我在想,这个会不会是cookies的验证参数,
果不其然,在cookies里面发现了他,



5.version参数



version=1.6.1

5.ckey
js上搜索发现


ckey=DIl58SLFxFNndSV1GFNnMQVYkx1PP5tKe1siZu/86PR1u/Wh1Ptd+WOZsHHWxysSfAOhNJpdVWsdVJNsfJ8Sxd8WKVvNfAS8aS8fAOzYARzPyPc3JvtnPHjTdKfESTdnuTW6ZPvk2pNDh4uFzotgdMEFkzQ5wZVXl2Pf1/Y6hLK0OnCNxBj3+nb0v72gZ6b0td+WOZsHHWxysSo/0y9D2K42SaB8Y/+aD2K42SaB8Y/+ahU+WOZsHcrxysooUeND

!!现在我们所有参数都有了,先把他们组合起来试一试吧

http://ups.youku.com/ups/get.json?vid=XNDEzOTA0NTU2NA==&ccode=0502&client_ip=192.168.1.1&version=1.6.1&utid=e0k7FHGrqjkCAQ515EhfkC+L&ckey=DIl58SLFxFNndSV1GFNnMQVYkx1PP5tKe1siZu/86PR1u/Wh1Ptd+WOZsHHWxysSfAOhNJpdVWsdVJNsfJ8Sxd8WKVvNfAS8aS8fAOzYARzPyPc3JvtnPHjTdKfESTdnuTW6ZPvk2pNDh4uFzotgdMEFkzQ5wZVXl2Pf1/Y6hLK0OnCNxBj3+nb0v72gZ6b0td+WOZsHHWxysSo/0y9D2K42SaB8Y/+aD2K42SaB8Y/+ahU+WOZsHcrxysooUeND&client_ts=155970345

dokuro 发表于 2019-6-5 11:14

恭喜你得到的结果是:客户端无权播放
{"cost":0.0020000000949949026,"data":{"error":{"note":"客户端无权播放,201","code":-6004}},"e":{"code":0,"provider":"hsfprovider","desc":""}}

GMCN 发表于 2019-6-5 11:13

{"cost":0.0020000000949949026,"data":{"error":{"note":"客户端无权播放,201","code":-6004}},"e":{"code":0,"provider":"hsfprovider","desc":""}}

天使3号 发表于 2019-6-5 11:15

楼上两位,协议头问题吧,cookie没带

wakichie 发表于 2019-6-5 11:53

没啥用,感觉

山旮旯的帅哥 发表于 2019-6-5 12:11

优酷还是很好下载的,爱奇艺和腾讯m3u8地址都加密了。

nonu 发表于 2019-6-5 12:56

重点是思路过程吧。

yeqiang163 发表于 2019-6-5 13:21

感谢分享,学习了原理!

airdge 发表于 2019-6-5 14:09

默认ckey带cookies才能解析
优酷的ckey算法才是重点

汪洋 发表于 2019-6-5 14:25

支持楼主
页: [1] 2 3 4 5
查看完整版本: 优酷H5简单分析