JS逆向 -- 分析某站aid、cid、w_rid和sid的加密过程

接上节课内容

JS逆向 -- 分析某站buvid3和_uuid的加密过程

JS逆向 -- 分析某站b_lsid值加密过程

一、清除cookie信息,刷新网页,ctrl+f搜索sid,这样找到的数据是在url里或者响应信息里面,全局搜索找到的一般都是在js里面的数据,找到一个v2的数据包,里面有setcookie

二、该数据包是get请求,分析里面的请求数据

https://api.bilibili.com/x/player/wbi/v2?aid=400789390&cid=1119048652&w_rid=b18731f67c5be2da813395f8a884ccdd&wts=1683797034

1、aid和cid

刷新视频页面,ctrl+f搜索aid,发现aid和cid,还有视频阅读量,就在网页源码中,所以可以直接python代码实现

代码实现

import requests
import re


headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
}
url = 'https://www.bilibili.com/video/BV1TW4y1x73q/?spm_id_from=333.788.recommend_more_video.11'


响应数据 = requests.get(url, headers=headers).text
正则结果 = re.search('"stat":\{"aid":(?P<aid>\d+),"view":(?P<view>\d+),"danmaku', 响应数据)
aid=正则结果.group("aid")
视频播放量=正则结果.group("view")
cid=re.search('"cid":(.*?),"dimension"', 响应数据)
print(aid,cid.group(1),视频播放量)

2、w_rid

w_rid出现了三次,都不一样,我们要的是最下面的值v2里面的w_rid

在关键代码处全部下断

第一次断下

第二次断下

重新ctrl+f重新搜索w_rid,V2数据包中w_rid是第二次断下来的值

重新刷新页面,第二次断下,然后追数据,最后加密值来自于h

h = o()(p + i),p的值是:"aid=945189005&cid=892094702&wts=1684220967"

i第值是固定值:caa9ea6e1ec3e32c3efa79550f4b416a

最后的结果是32位数值,我们猜测是md5加密,经过测试,也确实是md5加密

三、重新构造数据包,实现V2的发送

import requests
import re
import execjs
import time


headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
}
url = 'https://www.bilibili.com/video/BV1TW4y1x73q/?spm_id_from=333.788.recommend_more_video.11'


响应数据 = requests.get(url, headers=headers).text
正则结果 = re.search('"stat":\{"aid":(?P<aid>\d+),"view":(?P<view>\d+),"danmaku', 响应数据)
aid=正则结果.group("aid")
视频播放量=正则结果.group("view")
cid=re.search('"cid":(.*?),"dimension"', 响应数据)
print(aid,cid.group(1),视频播放量)




def getwrid(aid,cid,r):
    node = execjs.get()
    fp = open('jiami.js', 'r', encoding='utf8')
    ctx = node.compile(fp.read())
    a="aid="+aid+"&cid="+cid+"wts="+str(r)+"caa9ea6e1ec3e32c3efa79550f4b416a"
    res='MD5_Encrypt("%s")'%(a)
    print(res)
    return res
url='https://api.bilibili.com/x/player/wbi/v2'
r = int(time.time() * 1000)
print(r)
w_rid=getwrid(aid,cid.group(1),r)
print(w_rid)
参数={
    'cid':cid.group(1),
    'aid':aid,
    'w_rid':w_rid,
    'wts':r
}
res=requests.get(url,params=参数,headers=headers)
sid = res.cookies.get_dict()['sid']
print(sid)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web安全工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值