查找并分析百度云转储api首先你得有一个百度云盘账号,然后登录,用浏览器打开(这里以火狐浏览器为例)分享关联。F12打开控制台抓包。手动传输操作:选择所有文件->保存到网盘->选择路径->确定。在点击【确定】之前,建议先清除抓包记录,以便准确定位被转储的API。这就是我们中学时学过的【控制变量法】2333。可以看到上图中捕获到了一个带有“transfer”字样的post请求,这就是我们要找的transferapi。接下来的关键是分析它的请求头和请求参数,以便用代码来模拟它。点击它,然后点击右边的【Cookies】,就可以看到请求头中的cookies。Cookie分析因为dumping是登录后的操作,所以需要模拟登录状态,在请求头中设置登录相关的cookie。我们继续使用【控制变量法】,先删除浏览器中关于百度的所有cookies(在右上角的设置中,点击【隐私】,移除cookies。具体方法为百度。)然后登录,在右上角浏览器设置->隐私->删除cookies,搜索“bai”即可观察cookies。这是所有与百度有关的cookies。一个一个删除,刷新一次百度页面,直到删除BDUSS。刷新后,你登录又退出,所以断定是一个与登录状态相关的cookie。同样,删除STOKEN后,如果进行dump操作,会提示重新登录。所以这两个是dump操作必须带的cookie。弄清楚cookie情况后,可以构造请求头如下。除了上面提到的两个cookie,其他请求头参数可以参考手动dump时捕获的请求头。之所以保留这两个cookie作为参数,是因为cookie有生命周期,过期需要更新,而且不同的账号登录也有不同的cookie。参数分析接下来对参数进行分析,点击【Cookies】右侧的【Params】可以查看参数。如下:在上面的querystring(也就是后面的参数)中,除了framedshareid,from,bdstoken需要我们填写外,其他的可以保持不变,模拟的时候直接copy要求。前两个是共享资源相关的,bdstoken是登录账号相关的。下面表单数据中的两个参数分别是资源共享到用户网盘的目录和我们刚才点击保存的目录。所以,我们需要额外填写的参数有:shareid、from、bdstoken、filelist和path,bdstoken可以通过手动转储抓包找到,路径可以根据自己的需要定义,前提是你有这个网盘中的路径。其他三个需要从共享链接中爬取,后面【爬取shareid,from,filelist,发送请求传输到网盘】部分会说明。弄清楚参数问题后,就可以构造dump请求的url如下。爬取shareid,from,filelist,发送请求转入网盘。以上面的资源链接为例(随时都可能被抓到,没关系,其他链接的结构都是一样的),我们先用浏览器手动访问,F12打开控制台先分析源码,看看我们要的资源信息在哪里。控制台有搜索功能,直接搜索“shareid”。定位到4个shareids,前三个与这个资源无关,是其他共享资源,最后一个位于html文件的最后一个标签块。双击后可以看到格式化后的js代码,可以发现我们想要的信息都在里面了。摘录如下:可以看到yunData.PATH这两行只指向一条路径信息。完整的文件列表可以从yunData.FILEINFO中提取。它是一个json。列表中的信息是Unicode编码的,所以在控制台是看不到的。对于中文,使用Python代码访问并获取输出。如果直接使用request请求,会得到404错误。可能是需要构造请求头参数,不能直接请求。博主这里为了节省时间,直接使用seleniumwebdriver来获取两次,然后接收返回信息。第一次get没有任何cookie,但是baidu会给你返回一个BAIDUID,第二次get之后就可以正常访问了。yunData.FILEINFO的结构如下,可以复制粘贴到json.cn中看的更清楚。知道了这三个参数的位置,我们就可以用正则表达式来提取了。代码如下:爬取这三个参数后,可以调用之前的transfer方法进行转账。
