时光相册批量下载分析及思路

查看 237|回复 9
作者:LaoDan   
写在最前
前几天有需求需要将时光相册里面的照片以及视频全部下载下来,14个G,8000个文件。利用网页一个一个的下,不说遗漏,就是时间上也消耗不起。
分析一下协议,打算用软件进行自动获取。
调出开发者工具
用搜狗浏览器为例,打开任意页面,按F12即可调出开发者工具。


1.png (27.17 KB, 下载次数: 2)
下载附件
2020-9-25 08:47 上传

分析获取网站照片原理。
在时光相册网站登陆处,按F12调出开发者工具,点击Network,然后正常输入账号及密码,进行登陆。
抓取请求如下:


2.png (40.5 KB, 下载次数: 0)
下载附件
2020-9-25 08:50 上传

其中第一条为初始数据,获取两百条数据,返回的JSON数据如下:


3.png (26.5 KB, 下载次数: 1)
下载附件
2020-9-25 08:53 上传

在上图中可以看到data.media_list[0-195].id为照片的ID号,虽然网站请求了两百条数据,但是获取下来并非两百条,0-195条,算上0,共196条。
这些数据需要依次记录下来,留取到接下来的下载使用。
下载


4.png (87.4 KB, 下载次数: 2)
下载附件
2020-9-25 08:58 上传

F12调出开发者工具,点击两张照片,点击批量下载,获取请求。


5.png (24.93 KB, 下载次数: 2)
下载附件
2020-9-25 09:18 上传

首先在archive页面POST请求中,JSON中的data.url节点中有下载地址。
请求地址:https://web.everphoto.cn/api/media/archive
请求内容:media=687511189878682XXXX-687511193278165XXXX


1.png (13.45 KB, 下载次数: 0)
下载附件
2020-9-25 15:02 上传

重点说一下请求内容,media=之后的内容为获取的ID号,多ID号以-号分隔处理。
请求到浏览器,直接可以下载。
至于请求头,稍候再说。
prev
第一次的请求已经完成,但只有196个,然后再接着循环接下来的请求。
第一次的请求数据JSON节点data.pagination.prev数据中,可以看到prev值。
带入下一个请求,以下所有的请求都是带入上一个请求中的prev值。
如:[/color">https://web.everphoto.cn/api/users/self/updates?count=200&p=prev_66217238672137XXXXX
下载数据(每次只下载一个请求中的数据,即200个以内或200个。)
获取prev值
再接下来用获取的prev值再接下来请求。
循环即可,一直到没有任何ID号,可以判断为所有的照片已经全部获取完成了。
流程:
获取初始数据-列出data.media_list[0-195].id所有的ID号,将ID号依次处理,以-号分隔。
下载
获取prev
再接下来请求第二个,然后依次循环,这个流程说的很麻烦,但是各位获取请求,看一眼就明白了。
请求头
所有的请求头中需要带入Cookie、User-Agent,UA带不带或者也可以,不过我习惯带入。
我下载的信息的时候也是没有成品,单个一个一个功能进行开发的程序,用完就删。所以目前没有成品开发,不过感兴趣的朋友,可以开发一下。

下载次数, 数据

MrKang   

mark...后期会用谢谢分享
lovejiaxu   

没有把照片存网上的习惯,谢谢分享了
stoner   

虽然用不到,看技术呢,等更ing...
MIr李   

关注了,等更新
isroot   

这个相册刚出来的时候,啥限制都没有,现在开始向网盘营销靠了
honghai0119   

太高深了  最好有成品可以直接享用
来交个朋友   

虽然用不到,看看也不错
云中泥   

向大佬学习
让我康康   

坐等更新
您需要登录后才可以回帖 登录 | 立即注册

返回顶部