liu3321 发表于 2021-10-16 21:28

有一个在正规 线视频类网站,sign值求解

网站列表页有个sign值链接 http://iotqcloud.com/manager/learning_quan/ziyuan.html
第一个sign fiddler抓包看这条链接
http://yunstudy.koo6.cn/Apis/Attrbute/getCatalogList
第二个sign 课程目录点开后 单集视频取m3u8链接的时候

需求是给弄两个 这两处理sign 的明文 例子谢谢!!!!

涛之雨 发表于 2021-10-16 21:28

本帖最后由 涛之雨 于 2021-10-17 15:18 编辑


汗、、、
又没审题。。。
sign的算法在`getResources`中
``` js
//格林api
function getResources(type, json) {
var apikey = sessionStorage.apikey
var account = sessionStorage.apiaccount
if (localStorage.getItem("phone")) {
    json.jgcode = localStorage.getItem("phone")
} else {
    json.jgcode = "005e2d377188e6460b00e809b7546913"
}
var array = []
var sign = ''
for (var key in json) {
    array.push(key)
}
array.sort()
array.forEach((item) => {
    sign = sign + json
})
let time = gettime()
sign = sign + time + apikey
sign = hex_md5(sign)
json.time = time
json.sign = sign
json.Account = account
let url = httpurl + type
return httpAjax(url, json)
}
```
主要就是
1. 根据条件向json中添加jgcode
2. json中每一项按照从a-z的顺序排列后拼接成字符串
3. `md5(【拼接的字符串】+ time + apikey)`
然后看一下js吧。。。。


---

没说什么语言说一下思路和简单的js代码吧
首先是楼主问的“正则表达式匹配m3u8链接”
这个直接返回的就是json,直接用就好了,
此外有封装好的函数,直接拉过来调用就行




首先api接口有数据校验,逻辑在 iotqcloud.com/manager/learning_quan/js/common.js 中的getResources函数内,有一个简单的封装。
然后就是撸流程了

首先请求`getVersionsList`,获取各种版本编号啥的。
参数是
``` js
let data = {
      xueke: xueke,//学科
    }
```

然后请求`getCatalogList`,获取书的id(还有封面啥的),参数为:
``` js
let data = {
      xueduan: xueduan,//学段?
      xueke: xueke,//学科
      nianji: nianji,//年级
      num: 15,//这应该是一页显示15条
      page: count,//请求第xx页数
      banben: chuban,//好像是出版,无妨,反正js里直接有
      is_null: 1//问题不大
    }
                ```
               
               
获取到所需书的id,

然后请求`getVideoList`,获取视频列表。
参数是
``` js
let data = {
    tid: tid,
    mid: video_id,
    num: 200
}
if (zxtype) {
    data.zxtype = zxtype
}
```
好像又有个什么`zx类型`也无所谓,遇到问题再说

获取到视频的id后请求链接(也就是楼主最关心的m3u8链接)getVideoUrl
参数只有一个id
``` js
let data = {
    id: id
}
```


附上console直接跑的js(拿过来直接用就好,也没啥多余的东西需要自己去撸)
只请求第一个视频的第一个列表
``` js
getResources("Attrbute/getCatalogList", {
    xueduan: xueduan,
    xueke: xueke,
    nianji: nianji,
    num: 15,
    page: count,
    banben: chuban,
    is_null: 1
}).then(res1 => {
    let r = res1?.result?.Result;
    if (!r) return;
    let vid = r.id;
    getResources("Video/getVideoList", {
      tid: 1,
      mid: vid,
      num: 200
    }).then(res2 => {
      let idList = res2?.result;
      if (idList) {
            getResources("Video/getVideoUrl", {
                id: idList.id
            }).then(res3 => {
                console.log(res3?.result?.url)
            })
      }
    })
})
```

把里面的两个列表取0的地方改成需要的序号或者是改成循环即可获取全部的视频链接

然后好像有部分还需要登录还是购买然后才能获取,
在线的js正好也可以省去模拟登录的过程。。。
不过好像没有权限的会跳转到别的页面,没咋仔细看了
页: [1]
查看完整版本: 有一个在正规 线视频类网站,sign值求解