如何使用python3的requests库实现百度云网盘批量离线下载bt链接种子

  • A+
所属分类:python实战案例

前几篇文章介绍了百度网盘文件如何批量重命名,包括使用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

三、离线源码下载

  1. # coding=utf-8
  2. import time
  3. import requests
  4. def lixian(source_url):
  5.     # 定义post的地址
  6.     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)
  7.     heads = {
  8.         "Host": "pan.baidu.com",
  9.         "Origin": "http://pan.baidu.com",
  10.         "Referer": "http://pan.baidu.com/disk/home",
  11.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36",
  12.         "Cookie": cookie
  13.     }
  14.     pdata = {"method": "add_task",
  15.              "app_id": "250528",
  16.              "source_url": source_url,
  17.              "save_path": save_path}
  18.     res = requests.post(post_url, data=pdata, headers=heads)
  19.     if res.status_code == 200:
  20.         print(res.text)
  21. if __name__ == '__main__':
  22.     bdstoken = '' #自己的bdstoken值
  23.     logid = '' #自己的logid值
  24.     save_path = '/' #离线文件保存路径,默认为根目录
  25.     cookie = '' #自己登录后获取的cookie值
  26.     url_list = [
  27.         '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',
  28.         'http://gd.189.cn/dg/push/20180604/618tmkdxyad.htm?SP=ABzs/PzoPOz83Og7yXnpGRmpOgmJugy8vOxs/Pg86Dy8vOxs/Pg5uYnpuMk5vMy83OyM3Kyr/OyczRmJuDzs7M0cjI0c7G0crGg86Dzc/LysjNg87LzcnIxoPOz8/Oz86DiIiI0ZuGi4vH0ZGai4POys3GzsjPysfGg86Dz4PPg87NzP=='
  29.     ]
  30.     for li in url_list:
  31.         lixian(li)
  32.         time.sleep(3)
weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: