事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站。我信以为真,便激动地点开寻求经典电影,于是便引出了一段经典的百度网盘之战。

免责申明:文章中的工具等仅供个人测试研究,请在下载后24小时内删除,不得用于商业或非法用途,否则后果自负,文章出现的截图只做样例演示,请勿非法使用

先来看下这个视频网站的截图:

不得不说,这是一个正规的网站,正规的视频,只是看着标题的我想多了而已。

怀着满满的求知欲,我点开了链接,并在网页下方看到了视频资源链接。

  这里有2种资源,一种是百度网盘,另一种是迅雷种子,不得不说这个网站还是比较良心,相较于只发图不留种的某些网站。按照正常逻辑,此时我应该点开资源地址静静地欣赏起来(不对,其实我不是那样的人),因此我选择默默地将资源添加到网盘收藏。看到网盘又多了几部佳作,心情顿时爽了很多,但仅仅添加几部作品并没有满足我的收藏欲望,于是我便开始探索如何快速将视频资源自动添加到百度网盘,也由此引发了我对于百度网盘的一系列斗争。

战争序幕

首先通过观察该网站url构成,以及网页源码组成,我决定采用爬取的方式采集资源链接地址。
网页截图:

该过程并没有遇到很大的问题,我采用了python+协程的方式进行采集,很快便获取了一部分资源地址:
百度网盘资源地址:

  写完采集数据脚本,采集完部分数据已是晚上11点,原本应该洗洗睡了,然而技术探索的力量鼓舞着我继续前行。目前资源地址都有了,然而对于百度网盘资源,仍然需要一一点开,然后添加到我的网盘,此步骤太耗费精神,因此我决定继续挖掘自动添加资源到百度网盘的方法。

注意:以下内容是本文的重点技术内容,关乎着我与百度网盘一战的最终结局,请勿走开,精彩继续。

终极之战

首先我通过抓包,查看源码,审查元素等方式分析了百度分享页面的特征,判断其是否适合爬虫方式。

在经过一系列测试之后,我发现虽然过程有点曲折,但还是可以用爬虫的方式实现自动化的添加资源到网盘。

要实现这一技术,我总结了以下几点流程:

  • 获取用户cookie(可以手动登录然后抓包获取)
  • 首先爬取如:http://pan.baidu.com/s/1o8LkaPc网盘分享页面,获取源码。
  • 解析源码,筛选出该页面分享资源的名称、shareid、from(uk)、bdstoken、appid(app_id)。
  • 构造post包(用来添加资源到网盘),该包需要用到以上4个参数+cookies。

获取cookie

抓取cookie可以用很多工具,我用了火狐的Tamper插件,效果如下:
获取登录的数据包:

查看登录发送的请求包,发现有账号密码,当然我们这里需要的是cookie,可以在response中查看到。

cookie的格式如下:


BAIDUID=52C3FE49FD82573C4ABCEAC5E77800F6:FG=1;

BIDUPSID=52C11E49FD82573C4ABCEAC5E778F0F6;

PSTM=1421697115; PANWEB=1; Hm_lvt_7a3960b6f067eb0085b7196ff5e660b0=1491987412; Hm_lpvt_7a3960b6f067eb0085b7f96ff5e6260b0=1491988544;

STOKEN=3f84d8b8338c58f127c29e3eb305ad41f7c68cefafae166af20cfd26f18011e8;

SCRC=4abe70b0f9a8d0ca15a5b9d2dca40cd6;

PANPSC=16444630683646003772%3AWaz2A%2F7j1vWLfEj2viX%2BHun90oj%2BY%2FIsAxoXP3kWK6VuJ5936qezF2bVph1S8bONssvn6mlYdRuXIXUCPSJ19ROAD5r1J1nbhw55AZBrQZejhilfAWCWdkJfIbGeUDFmg5zwpdg9WqRKWDBCT3FjnL6jsjP%2FyZiBX26YfN4HZ4D76jyG3uDkPYshZ7OchQK1KQDQpg%2B6XCV%2BSJWX9%2F9F%2FIkt7vMgzc%2BT;

BDUSS=VJxajNlVHdXS2pVbHZwaGNIeWdFYnZvc3RMby1JdFo5YTdOblkydkdTWlVmUlZaSVFBQUFBJCQAAAAAAAAAAAEAAAA~cQc40NLUy7XEwbm359PwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFTw7VhU8O1Yb

 

由于此cookie涉及到个人账号,因此我做了改动处理,但格式应该是一样的。

访问百度资源分享页面

  请求页面如:http://pan.baidu.com/s/1o8LkaPc
  获取cookie以后,可以在访问百度资源分享页面时,在headers里面写入cookie值,并使用该cookie登录,期间我也失败过几次,原因还是需要加上其他header参数(如果不加cookie参数,返回的结果将是”页面不存在”)。
  请求成功之后,我们可以在源码中找到一些我们需要的内容,比如页面分享资源的名称、shareid、from(uk)、bdstoken、appid(app_id)值。

构造添加资源POST包

首先看下post包的构造:


POST https://pan.baidu.com/share/transfer?shareid=2337815987&from=1612775008&bdstoken=6e05f8ea7dcb04fb73aa975a4eb8ae6c&channel=chunlei&clienttype=0&web=1&app_id=250528&logid= HTTP/1.1

Host: pan.baidu.com

Connection: keep-alive

Content-Length: 169

Accept: */*

Origin: https://pan.baidu.com

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Referer: https://pan.baidu.com/s/1kUOxT0V?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

Cookie:

filelist=["/test.rar"]&path=/

 

  在post包的url中有一些参数,填写我们获取到的内容即可,还有一个logid参数,内容可以随便写,应该是个随机值然后做了base64加密。
  在post包的payload中,filelist是资源名称,格式filelist=[“/name.mp4”],path为保存到那个目录下,格式path=/pathname
cookie必须填上,就是之前我们获取到的cookie值。

最终返回内容

{"errno":0,"task_id":0,"info":[{"path":"\/\u5a31\u4e50\u6e38\u620f\/\u4e09\u56fd\u5168\u6218\u6218\u68cb1.4\u516d\u53f7\u7248\u672c.rar","errno":0}],"extra":{"list":[{"from":"\/\u5a31\u4e50\u6e38\u620f\/\u4e09\u56fd\u5168\u6218\u6218\u68cb1.4\u516d\u53f7\u7248\u672c.rar","to":"\/\u4e09\u56fd\u5168\u6218\u6218\u68cb1.4\u516d\u53f7\u7248\u672c.rar"}]}}
 

最终如果看到以上内容,说明资源已经成功添加到网盘,如果errno为其他值,则说明出现了错误,12代表资源已经存在。

战绩

花费了近1个小时之后,我写完了代码,其中大部分时间主要花费在调试与研究数据包上,期间遇到了很多坑,但最终还是解决了。
欣赏下程序运行时的快感吧:

百度网盘的战果:

搞完这些,写下这篇文章差不多快半夜12点了,视频资源我只跑了一小部分,其余的明天继续。(为了看点视频容易吗我?!)

项目GitHub地址:https://github.com/tengzhangchao/BaiDuPan

文章来自个人博客:https://thief.one/2017/04/12/2/

利用Python爬虫实现百度网盘自动化添加资源的更多相关文章

  1. 《精通Python网络爬虫》|百度网盘免费下载|Python爬虫实战

    <精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...

  2. 利用jsoup爬取百度网盘资源分享连接(多线程)

    突然有一天就想说能不能用某种方法把百度网盘上分享的资源连接抓取下来,于是就动手了.知乎上有人说过最好的方法就是http://pan.baidu.com/wap抓取,一看果然链接后面的uk值是一串数字, ...

  3. Python 一键获取百度网盘提取码

    该 GIF 图来自于官网,文末有给出链接. 描述 依托于百度网盘巨大的的云存储空间,绝大数人会习惯性的将一些资料什么的存储到上面,但是有的私密链接需要提取码,但是让每个想下载私密资源的人记住每一个提取 ...

  4. python自动保存百度网盘资源

    觉得有帮助的别忘了关注一下知识图谱与大数据公众号,完整代码移步从今天开始种树 开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过 ...

  5. python自动保存百度网盘资源,一定要看

    觉得有帮助的别忘了关注一下知识图谱与大数据公众号 开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存 ...

  6. 还在为百度网盘下载速度太慢烦恼?chrome浏览器插件帮你解决!

    百度网盘已然成为分享型网盘中一家独大的“大佬”了.时代就是这样不管你喜不喜欢,上网总会遇到些百度网盘共享的文件需要下载.然而,百度网盘对免费用户的限速已经到了“感人”的地步了,常常十多KB/秒的速度真 ...

  7. 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘

    百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...

  8. Python灰帽子:黑客与逆向工程师的Python编程之道|百度网盘免费下载|新手黑客入门

    百度网盘免费下载:Python灰帽子:黑客与逆向工程师的Python编程之道 提取码:tgpg 目录  · · · · · · 第1章 搭建开发环境 11.1 操作系统要求 11.2 获取和安装Pyt ...

  9. 慕课网金职位 Python工程师 百度网盘下载

    百度网盘链接:https://pan.baidu.com/s/1xshLRO3ru0LAsQQ0pE67Qg 提取码:bh9f 如果失效加我微信:610060008[视频不加密,资料代码齐全,超清一手 ...

随机推荐

  1. PostgreSQL 数据库错误状态编号解释[附带列表

    PostgreSQL 服务器发出的所有消息都赋予了五个字符的错误代码, 这些代码遵循 SQL 的 "SQLSTATE" 代码的习惯.需要知道发生了什么错误条件的应用通常应该测试错误 ...

  2. win+r 快速命令

    control keymgr.dll   打开凭据管理器 secpol.msc   本地安全策略 mstsc   远程 msconfig   启动选项 %temp%   临时文件夹 \\192.168 ...

  3. 如何选安卓android|linux系统开发板,简化学习难度,缩短开发进程

    平台一:iTOP-4412精英版 系统支持:Android 4.0.3系统  / Android 4.4系统 / Linux + Qt系统 / Ubuntu12.04系统 开发板特点:Cortex-A ...

  4. Android(java)学习笔记200:JNI之NDK的概念

    1.交叉编译 (1)概念 在一个平台(硬件)和os(软件)环境下,编译出另一种平台和os下可以运行的二进制代码. e.g:     电脑端                               ...

  5. Android(java)学习笔记199:JNI之JNI概念

    1. JNI是什么? java native interface (java本机接口) 比如方法声明: public final native Class<?>  getClass(): ...

  6. 05EXtensible Stylesheet Language

    1. EXtensible Stylesheet Language 1. EXtensible Stylesheet Language XSL 指扩展样式表语言(EXtensible Styleshe ...

  7. Android反编译初步

    网上关于Android反编译的帖子很多,反编译的步骤也是很详细,本文Android反编译参考博客:https://www.cnblogs.com/dhcn/p/7120891.html 而反编译中最主 ...

  8. Myeclipse中dubug调试出现参数显示的框

    1.步骤: window>show view>variables 结果:

  9. vue set方法

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  10. Kafka生产者----向kafka写入数据

    开发者可以使用kafka内置的客户端API开发kafka应用程序.除了内置的客户端之外,kafka还提供了二进制连接协议,也就是说,我们直接向kafka网络端口发送适当的字节序列,就可以实现从Kafk ...