网站首页 > 博客文章 正文
本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删! |
?
记一次某度网盘 无限速下载地址解析站的分析及实现
操作环境
- win10 、 mac
- Python3.9
- requests、lxml
- Charles
分析
解析站:
aHR0cHM6Ly93d3cua2Vsb25nd28uY29tL1Jlc291cmNlX2Z1bmN0aW9uL3Bhbi9iYWlkdS8=
经分析研究,发现想要拿到无限速下载地址共需两步:
1.写入网盘地址,提取出解析所需的参数
就是一个get接口,传入网盘地址拿到相应参数
2.解析网盘不限速下载地址
根据第一步中提取的参数,构造post请求,即可解析出下载地址
脚本实现
1.提取出解析所需的参数
def get_level_one(url, pwd=None):
"""
一级解析
url:网盘地址
pwd:网盘密码
"""
print(f'地址:{url} 一级参数提取中')
# 解析接口
params = {
'url': url,
'pwd': pwd
}
# 提取二次解析所需参数
res = requests.get(jx_ul, params=params)
root = etree.HTML(res.content)
download_params = root.xpath('//*[@id="bd_list"]/div[2]/div/a/@href')
parameter = []
n = download_params[0].split(',')
for i in n:
if "javascript:downfile(" in i:
i = i.replace('javascript:downfile(', '')
if ')' in i:
i = i.replace(")", '')
parameter.append(i)
print(parameter)
print("成功提取一级解析参数")
return parameter
2.提取出解析所需的参数
def get_level_two(parameter):
# 二级解析
print(f'下载地址解析中,需等待2-5秒')
headers = {
'Connection': 'keep-alive',
'Content-Length': '264',
'sec-ch-ua': '"Microsoft Edge";v="107", "Chromium";v="107","Not=A?Brand";v="24"',
'Accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'sec-ch-ua-mobile': '?0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35',
'sec-ch-ua-platform': '"Windows"',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,en-GB-oxendict;q=0.5',
'Cookie': 'session_prefix=a5a4be6cf29eaac32b0c2aa55750daa7; Hm_lvt_f749697bf30790443314f1111033dc5c=1667395320,1667737450,1667818866,1667870341',
}
downfile = {
'fs_id': parameter[0].replace("'", ''),
'sign': parameter[1].replace("'", ''),
'timestamp': parameter[2].replace("'", ''),
'randsk': parameter[3].replace("'", ''),
'share_id': parameter[4].replace("'", ''),
'bdstoken': parameter[5].replace("'", ''),
'filesize': parameter[6].replace("'", ''),
'uk': parameter[7].replace("'", ''),
'md5': parameter[8].replace("'", ''),
}
response = requests.post(ask_download, headers=headers, data=downfile)
# 提取下载链接
# 提取二次解析所需参数
root = etree.HTML(response.text)
params = root.xpath('//div[@class="q-topic-item"]/div/a[1]/@href')
if params:
href = params[0].replace("javascript:file_url_copy('", '').replace("')", '')
else:
href = '提取失败!'
print(f'下载地址:{href}')
效果
资源下载
https://download.csdn.net/download/qq_38154948/86978290
?
本文仅供学习交流使用,如侵立删! |
?
- 上一篇: Apache组件HttpPost使用方法
- 下一篇: 我是如何做列表页的
猜你喜欢
- 2025-01-02 在测试接口的时候,还在为token过期郁闷?
- 2025-01-02 小伙给同事爬取数据竟获取不到,竟要使用这种请求方式才能获取?
- 2025-01-02 历史上的今天大事件查询工具推荐 - 历史上的今天 API
- 2025-01-02 面试突击64:了解 HTTP 协议吗?
- 2025-01-02 总结的HTTP比较详细的知识
- 2025-01-02 什么是Http请求走私(Http Request Smugging)及如何发现?
- 2025-01-02 手机号码二要素核验API:提升数据准确性与安全性
- 2025-01-02 真不是吹,Spring 里这款牛逼的网络工具库你可能没用过
- 2025-01-02 详解HTTP协议基本结构
- 2025-01-02 计算机网络-应用层-万维网
你 发表评论:
欢迎- 368℃用AI Agent治理微服务的复杂性问题|QCon
- 364℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 347℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 343℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)