介绍
在爬取南瓜电影(https://www.vcinema.cn/)视频播放链接时,会验证接口请求头里的参数,有些是固定的可以直解复制粘贴,有些是需要算法生成的需要破解。
请求头参数
参数名称 | 参数值 | 是否固定 | 是否必须 |
---|---|---|---|
Api_version | API版本,如:5.1.9 | ||
App_version | APP版本,如:3.3.1 | ||
Channel | 通道,如:PC02 | 否 | |
Cid | 5abb1633e-a6a10d-ef79 | 否 | |
Content-type | application/json; charset=UTF-8 | ||
Credentials | include | ||
Device_id | 同Cid | 否 | |
Device_info | Windows_Chrome(129.0.0.0) | ||
Format | JSON | ||
Platform | 6 | ||
Platform_name | tv-pc | ||
Session_id | 0 | ||
Signature_nonce | 签名随机数 | 否 | |
Signature_secret | 签名密钥 | 否 | |
Timestamp | 13位时间戳 | 否 | |
User-Agent | 设备UA | ||
User_id | 用户ID,随意,默认0 | 否 | |
Verify_info | 验证信息 | 否 | 否 |
结合上表,参数中只有Signature_nonce和Signature_secret需要破解生成方式。
Signature_nonce和Signature_secret破解
打开开发者工具搜索“signature_nonce”可发现此参数在“7bc7b6d.js”文件中,如图1:
![图片[1]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/3/58767/i_1727966258767_dde37eec2c7c5aa8b9a8449ea7ce9647_b_w824h525.png)
进入此文件搜索“signature_nonce”,可定位至生成函数”_(0, r)“,r为13位时间戳,如图2
![图片[2]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/3/8994/i_1727966808994_5440820b0d13fd4b102d4b5e01549ea1_b_w784h517.png)
打个断点可发现”_“函数的具体内容,如图3,此函数中,r为0~65536之间的随机整数,n为传入的13为时间戳字符串,再对r和n拼接成的新字符串进行加密,最后得到signature_nonce参数。
![图片[3]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/3/94836/i_1727967094836_638bd205a3181f67ffdf6a760bb269da_b_w806h464.png)
在Object(l.b)处打个断点,可发现加密函数内容,如图4,可知这是AES-CBC加密,密钥key和偏移量iv都已经知晓。
![图片[4]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/3/72530/i_1727968072530_d765546c1ed6ed452a32c07d3a896c68_b_w874h676.png)
再往下走可找到Signature_secret参数生成函数,如图5,可以看到先通过hmacsha1加密(e为加密字符串,t为盐),再进行一次加密,得到最后的Signature_secret参数。
![图片[5]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/3/81976/i_1727970681976_8d21e254c781231027a63c844f1c37f4_b_w859h579.png)
在stringify处断点可以找到第二次加密的函数,如图6:
![图片[6]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/3/74446/i_1727971074446_979c168a50d25f5e65cbe8bea835ba0c_b_w822h494.png)
通过断点调试可知,字符串e为:POST&%2F&action%3D%252Fmedia%252Fget_play_movie_urls_v3%26api_version%3D5.1.9%26app_version%3D3.3.1%26cid%3D0866b88ad-a8beeb-7284%26device_id%3D0866b88ad-a8beeb-7284%26format%3DJSON%26platform_name%3Dtv-pc%26session_id%3D0%26signature_nonce%3Dac80a63d8a90dce64cc6d521e46fcfe0213b70801414ff600687a1e59bb3c4a7%26timestamp%3D1727972213294%26user_id%3D0
,此字符串并不是固定的,其中POST
为请求方式,根据不同接口请求方式变化;media%252Fget_play_movie_urls_v3
为接口路径(https://open-web-api-v2.vcinema.cn/v5.0/media/get_play_movie_urls_v3
),随不同接口而变化;其它参数和header里的对应。
t为token拼接”&“后的值,token有两个获取方法:一是之间访问网页源代码,通过正则获取;二是通过接口:https://oauth-api.vcinema.cn/apply_api_token
获取,GET请求,header携带上表所有参数,signature_secret值留空即可。
![图片[7]-南瓜电影signature_nonce&signature_secret算法破解-聆风小站](https://image.planet.youku.com/img/100/4/29504/i_1727974929504_130403b3f927c343a2fc816d6c6612d5_b_w1784h655.png)
Signature_nonce和Signature_secret的PHP函数
备注
有基础的可以自己根据方法写,如果不会的就拿成品吧!
暂无评论内容