让代码更简单

新版123云盘直链解析

重要:本文最后更新于2024-08-07 13:56:55,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

去年发布过一个123云盘直链解析分析过程,貌似123云盘增加了验证,导致以前的接口无法使用,今天看到某位大佬分析的新版解析接口,分享给大家。

先上源码

复制
import requests
import random
import re
import base64
import time

def 取多重文本随机数(位数:int):
文本数字=''

for i in range(位数):
文本数字+=str(random.randint(0,10))

return 文本数字

while True:
原地址=input('请输入分享链接:')

密码=input('请输入密码,若无则留空:')

标识=re.search('s/(.+).html',原地址).group(1)

时间戳_秒=time.time()

随机数_文本x10=取多重文本随机数(10)

随机数_文本x10_1=取多重文本随机数(10)

随机数_文本x7=取多重文本随机数(7)

密码地址=f'https://www.123pan.com/b/api/share/get?\
{随机数_文本x10}={时间戳_秒}-{随机数_文本x7}-{随机数_文本x10_1}\
&limit=100&next=0&orderBy=file_name&orderDirection=asc&shareKey=\
{标识}&SharePwd={密码}&ParentFileId=0&Page=1&event=homeListFile&operateType=1'

数据列表=requests.get(密码地址).json()

数据列表=数据列表['data']['InfoList'][0]

接口地址='https://www.123pan.com/b/api/share/download/info?\
{随机数_文本x10}={时间戳_秒}-{随机数_文本x7}-{随机数_文本x10_1}'

提交数据={
'ShareKey':标识,
'FileId':数据列表['FileId'],
'S3KeyFlag':数据列表['S3KeyFlag'],
'Size':数据列表['Size'],
'Etag':数据列表['Etag'],
}

返回数据_接口=requests.post(url=接口地址,json=提交数据)

base64密文=re.search(r'params=(.+)\\u',返回数据_接口.text).group(1)

直链=base64.b64decode(base64密文).decode()

print('\n',直链,'\n')

需要注意的是这段代码仅对小文件生效,大文件必须登录才能使用。

解析的分享地址应该是像下面这样的地址

复制
https://www.123pan.com/s/qfTFjv-QndBB.html

而不是这样的文件夹地址

复制
https://www.123pan.com/s/UweA-FhZQH

简单来讲就是仅能单个文件解析

解析过程

通过分享链接拿到文件标识如上所示的qfTFjv-QndBB就是文件标识

然后准备三个随机数,长度分别为10,10,7。再加上当前时间戳

构建文件信息请求地址

复制
https://www.123pan.com/b/api/share/get?\
{随机数_文本x10}={时间戳_秒}-{随机数_文本x7}-{随机数_文本x10_1}\
&limit=100&next=0&orderBy=file_name&orderDirection=asc&shareKey=\
{标识}&SharePwd={密码}&ParentFileId=0&Page=1&event=homeListFile&operateType=1

使用get请求后,可以拿到文件的详细信息,包括下一步获取直链使用的数据,这些数据在上一步返回的json数据的[‘data’][‘InfoList’][0]中。

构建直链请求地址

复制
https://www.123pan.com/b/api/share/download/info?\
{随机数_文本x10}={时间戳_秒}-{随机数_文本x7}-{随机数_文本x10_1}

注意,这里的时间戳使用上一步相同的时间戳,也就是说这个参数保持一致。

请求内容就是从上一步获得的json数据中获取的。

复制
{
'ShareKey':标识,
'FileId':数据列表['FileId'],
'S3KeyFlag':数据列表['S3KeyFlag'],
'Size':数据列表['Size'],
'Etag':数据列表['Etag'],
}

最后以post方式发送请求即可获得被base64编码后的直链地址,params=后面的就是,直接解码即可。

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (3)

登录后评论
尝试了一下 好像已经失效了
大佬能加个token来实现免登录下载那种大文件的吗
不建议用这些手段,因为很有可能随时失效
QQ咨询 邮件咨询 狗哥推荐