0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python爬虫:寻找并分析百度云的转存api

马哥Linux运维 来源:未知 作者:李倩 2018-03-31 09:18 次阅读

寻找并分析百度云的转存api

首先你得有一个百度云盘的账号,然后登录,用浏览器(这里用火狐浏览器做示范)打开一个分享链接。F12打开控制台进行抓包。手动进行转存操作:全选文件->保存到网盘->选择路径->确定。点击【确定】前建议先清空一下抓包记录,这样可以精确定位到转存的api,这就是我们中学时学到的【控制变量法】2333。

可以看到上图中抓到了一个带有 “transfer” 单词的 post 请求,这就是我们要找的转存(transfer)api 。接下来很关键,就是分析它的请求头和请求参数,以便用代码模拟

点击它,再点击右边的【Cookies】就可以看到请求头里的 cookie 情况。

cookie分析

因为转存是登录后的操作,所以需要模拟登录状态,将与登录有关的 cookie 设置在请求头里。我们继续使用【控制变量法】,先将浏览器里关于百度的 cookie 全部删除(在右上角的设置里面,点击【隐私】,移除cookies。具体做法自己百度吧。)

然后登录,右上角进入浏览器设置->隐私->移除cookie,搜索 "bai" 观察 cookie 。这是所有跟百度相关的 cookie ,一个个删除,删一个刷新一次百度的页面,直到删除了 BDUSS ,刷新后登录退出了,所以得出结论,它就是与登录状态有关的 cookie 。

同理,删除掉 STOKEN 后,进行转存操作会提示重新登录。所以,这两个就是转存操作所必须带上的 cookie 。

弄清楚了 cookie 的情况,可以像下面这样构造请求头。

除了上面说到的两个 cookie ,其他的请求头参数可以参照手动转存时抓包的请求头。这两个 cookie 预留出来做参数的原因是 cookie 都是有生存周期的,过期了需要更新,不同的账号登录也有不同的 cookie 。

参数分析

接下来分析参数,点击【Cookies】右边的【Params】查看参数情况。如下:

上面的query string(也就是?后跟的参数)里,除了框起来的shareid、from、bdstoken需要我们填写以外,其他的都可以不变,模拟请求的时候直接抄下来。

前两个与分享的资源有关,bdstoken与登录的账号有关。下面的form data里的两个参数分别是资源在分享用户的网盘的所在目录和刚刚我们点击保存指定的目录。

所以,需要我们另外填写的参数为:shareid、from、bdstoken、filelist 和 path,bdstoken 可以手动转存抓包找到,path 根据你的需要自己定义,前提是你的网盘里有这个路径。其他三个需要从分享链接里爬取,这个将在后面的【爬取shareid、from、filelist,发送请求转存到网盘】部分中进行讲解。

搞清楚了参数的问题,可以像下面这样构造转存请求的 url 。

爬取shareid、from、filelist,发送请求转存到网盘

以上面这个资源链接为例(随时可能被河蟹,但是没关系,其他链接的结构也是一样的),我们先用浏览器手动访问,F12 打开控制台先分析一下源码,看看我们要的资源信息在什么地方。控制台有搜索功能,直接搜 “shareid”。

定位到4个shareid,前三个与该资源无关,是其他分享资源,最后一个定位到该 html 文件的最后一个标签块里。双击后可以看到格式化后的 js 代码,可以发现我们要的信息全都在里边。如下节选:

可以看到这两行

yunData.PATH 只指向了一个路径信息,完整的 filelist 可以从 yunData.FILEINFO 里提取,它是一个 json ,list 里的信息是Unicode编码的,所以在控制台看不到中文,用Python代码访问并获取输出一下就可以了。

直接用request请求会收获 404 错误,可能是需要构造请求头参数,不能直接请求,这里博主为了节省时间,直接用selenium的webdriver来get了两次,就收到了返回信息。第一次get没有任何 cookie ,但是baidu 会给你返回一个BAIDUID ,在第二次 get 就可以正常访问了。

yunData.FILEINFO 结构如下,你可以将它复制粘贴到json.cn里,可以看得更清晰。

清楚了这三个参数的位置,我们就可以用正则表达式进行提取了。代码如下:

爬取到了这三个参数,就可以调用之前的 transfer 方法进行转存了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    55

    文章

    4779

    浏览量

    84440
  • 百度云
    +关注

    关注

    0

    文章

    53

    浏览量

    7759

原文标题:Python爬虫实战:抓取并保存百度云资源(附代码)

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Labview可以调用百度地图API吗?

    如题,Labview可以调用百度地图API,怎么调用?有例程就最好,新手求帮助
    发表于 07-19 15:44

    百度地图离线API调用教程

    如何制作呢,今天就教大家简单实用的方法制作离线百度地图,绝对简单,甚至不需要具备任何编程知识都行。 1、材料准备水经注百度电子地图下载器 百度地图离线API:BaiduMap V1.3
    发表于 01-24 09:42

    百度云和百度开放是什么关系?愚人节不能不说的秘密。

    百度云和百度开放是什么关系?愚人节不能不说的秘密。
    发表于 03-29 15:23

    Python数据爬虫学习内容

    现行环境下大数据与人工智能的重要依托还是庞大的数据和分析采集,就如淘宝、京东、百度、腾讯级别的企业能够通过数据可观的用户群体获取需要的数据。而一般企业可能就没有这种通过产品获取数据的能力和条件。因此
    发表于 05-09 17:25

    Python爬虫初学者需要准备什么?

    现行环境下大数据与人工智能的重要依托还是庞大的数据和分析采集,类似于淘宝 京东 百度 腾讯级别的企业 能够通过数据可观的用户群体获取需要的数据,而一般企业可能就没有这种通过产品获取数据的能力和条件
    发表于 06-20 17:14

    使用Python爬虫实现百度图片自动下载的方法

    如何用Python爬虫实现百度图片自动下载?
    发表于 05-23 14:55

    0基础入门Python爬虫实战课

    大数据时代,有两种技能可以给自己增加竞争优势。一种是数据分析,旨在挖掘数据的价值,做出最佳决策;另一种是数据获取,即爬虫。学会它,相当于在数据时代掌握了攫取能源的最有效方式。谷歌百度等搜索引擎的崛起
    发表于 07-25 09:28

    百度API调用(三)——语音识别 精选资料推荐

    python 调用百度语音识别API 一、开通百度语音技术接口服务基本过程:1、打开百度ai开放平台 https://ai.baidu.co
    发表于 08-18 06:44

    百度“天智平台”发布 开放百度大脑能力

    11月30日,2016百度智峰会正式召开。百度联席总经理刘炀发表了题为ABC时代的演讲,并重点介绍了百度
    发表于 12-01 11:13 862次阅读

    百度IoT平台介绍

    百度iot平台基于百度成熟的计算技术,支持每天百亿IoT设备接入,配合IoT平台完成基本的连接、统计、设备管理。无缝对接
    发表于 12-09 14:07 33次下载

    基于互联网脑架构,对百度的未来发展趋势进行分析

    这是未来智能实验室基于互联网脑架构,对世界科技企业的未来发展趋势进行分析的文章。因为百度排在BAT的首位,因此这个系列研究文章就从百度开始进行研究。
    的头像 发表于 01-11 18:05 4939次阅读
    基于互联网<b class='flag-5'>云</b>脑架构,对<b class='flag-5'>百度</b>的未来发展趋势进行<b class='flag-5'>分析</b>

    百度正式推出百度ABC 3.0,与各行业结合实现产业变革

    提供技术基础,通过服务的方式参与汽车、家居的行业变革。在自动驾驶方面,百度云云端数据训练让Apollo拥有“日行百万里”的能力。智能车辆的推出使得
    的头像 发表于 09-05 15:35 4446次阅读

    百度Apollo高精定位方案分析

    本文通过对百度阿波罗的高精定位方案进行分析通过查看百度Apollo的Github上的定位模块代码,分析Apollo是如何达到L4级别的高
    的头像 发表于 10-02 11:06 1.9w次阅读

    新基建时代 百度如何加速百度智能发展

    百度智能事业群组(ACG)迎来了最新的组织架构调整。3月11日,百度CTO王海峰发布了题为《新基建号角吹响 智能一往无前》的内部邮件,宣布对ACG进行组织架构调整,通过扁平化管理,
    的头像 发表于 11-11 16:42 1699次阅读

    GTC 2023:百度智能DPU落地实践

    百度太行●计算:深度拥抱DPU的弹性计算基础架构 百度智能DPU落地实践:极致弹性、高可用的裸金属实例 百度智能DPU落地实践:更强
    的头像 发表于 03-24 16:22 3662次阅读
    GTC 2023:<b class='flag-5'>百度</b>智能<b class='flag-5'>云</b>DPU落地实践