- A+
前几篇文章介绍了百度网盘文件如何批量重命名,包括使用ES浏览器app、油猴js脚本工具、老毛子百度网盘批量重名软件以及百度网盘api等方式,今天继续挖掘百度网盘的功能:链接离线下载。百度网盘离线下载功能可以支持多种链接形式,如:BT链接、http、https、ftp、电驴、磁力链协议等。有时网络资源共享人数较少时下载非常缓慢,而且高清电影非常大好几G,严重占用了电脑的硬盘,特别是使用ssd固态硬盘的电脑。当资源较多且很多具有收藏价值时,百度网盘的离线下载功能就发挥作用了。一方面可以快速离线保存资源,同时百度网盘还可以在线观看,非常方便。但是,bt链接较多时,一个个进行手动离线下载会不方便。因此,本文特意介绍了如何使用python3的requests库对资源链接进行离线下载。
一、运行使用环境
本次测试使用的环境是Windows10 64位操作系统,python3.6的版本,pycharm编辑器,以及需要用到牛逼闪闪的requests库。requests库通过pip进行安装即可。
二、离线原理介绍
运用python requests库实现百度网盘批量离线下载本质上是模拟浏览器进行离线下载。因此,需要先手动操作一遍,了解离线下载的原理。打开Chrome浏览器或者搜狗浏览器(需切换到高速模式)登录自己的百度网盘后右键点击审查元素,接着是1.切换到network模式,2.新建离线任务并粘贴离线链接,3.清除资源链接,4.点击确定提交。如下图所示:
提交后会出现相应的post资源的链接,请求类型为post提交数据,链接格式如下:
https://pan.baidu.com/rest/2.0/services/cloud_dl?channel=chunlei&web=1&app_id=250528&bdstoken=特殊值&logid=特殊值&clienttype=0
同时链接提交的FormData包含method、app_id、source_url、save_path、type五个信息,分别是处理的方式、app编码、离线资源链接、保存的路径及资源的类型,其中主要需要修改的是离线资源的链接以及可以修改的路径。另外,提交资源还要有cookie信息。
综上,再进行离线下载时需要处理如下几个信息:
1.提交链接中的bdstoken=特殊值&logid=特殊值,里面的两个特殊值换成自己登录后的。
2.登录cookie信息
3.FormData数据里面的source_url和save_path
三、离线源码下载
- # coding=utf-8
- import time
- import requests
- def lixian(source_url):
- # 定义post的地址
- post_url = 'https://pan.baidu.com/rest/2.0/services/cloud_dl?channel=chunlei&web=1&app_id=250528&bdstoken={}&logid={}&clienttype=0'.format(bdstoken, logid)
- heads = {
- "Host": "pan.baidu.com",
- "Origin": "http://pan.baidu.com",
- "Referer": "http://pan.baidu.com/disk/home",
- "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36",
- "Cookie": cookie
- }
- pdata = {"method": "add_task",
- "app_id": "250528",
- "source_url": source_url,
- "save_path": save_path}
- res = requests.post(post_url, data=pdata, headers=heads)
- if res.status_code == 200:
- print(res.text)
- if __name__ == '__main__':
- bdstoken = '' #自己的bdstoken值
- logid = '' #自己的logid值
- save_path = '/' #离线文件保存路径,默认为根目录
- cookie = '' #自己登录后获取的cookie值
- url_list = [
- 'magnet:?xt=urn:btih:5b8764398069ab5287db92526f54f5e493e7f18c&dn=%e9%98%b3%e5%85%89%e7%94%b5%e5%bd%b1www.ygdy8.com.%e7%81%ab%e7%8b%90%e4%b8%80%e5%8f%b7%e5%87%ba%e5%87%bb.BD.720p.%e4%b8%ad%e8%8b%b1%e5%8f%8c%e5%ad%97%e5%b9%95.mkv&tr=udp%3a%2f%2ftracker.leechers-paradise.org%3a6969%2fannounce&tr=udp%3a%2f%2ftracker.opentrackr.org%3a1337%2fannounce&tr=udp%3a%2f%2feddie4.nl%3a6969%2fannounce&tr=udp%3a%2f%2fshadowshq.eddie4.nl%3a6969%2fannounce',
- 'http://gd.189.cn/dg/push/20180604/618tmkdxyad.htm?SP=ABzs/PzoPOz83Og7yXnpGRmpOgmJugy8vOxs/Pg86Dy8vOxs/Pg5uYnpuMk5vMy83OyM3Kyr/OyczRmJuDzs7M0cjI0c7G0crGg86Dzc/LysjNg87LzcnIxoPOz8/Oz86DiIiI0ZuGi4vH0ZGai4POys3GzsjPysfGg86Dz4PPg87NzP=='
- ]
- for li in url_list:
- lixian(li)
- time.sleep(3)