有一个在正规 线视频类网站,sign值求解
网站列表页有个sign值链接 http://iotqcloud.com/manager/learning_quan/ziyuan.html第一个sign fiddler抓包看这条链接
http://yunstudy.koo6.cn/Apis/Attrbute/getCatalogList
第二个sign 课程目录点开后 单集视频取m3u8链接的时候
需求是给弄两个 这两处理sign 的明文 例子谢谢!!!! 本帖最后由 涛之雨 于 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]