首页
社区
课程
招聘
[原创]水滴宝宝照片导出工具
2017-2-23 21:29 13482

[原创]水滴宝宝照片导出工具

2017-2-23 21:29
13482

水滴宝宝是我小孩出生到现在3岁一直在用的一款亲子相册app,挺好用,没有广告,但是最近发现有图片无法显示、视频无法播放的情况,感觉这app可能哪天就没了,我需要把之前上传的数据拿下来,备份到本地。

再后来,我有了个想法,想做成一个完整的程序,当成一款产品来做,做成注册版,供有需要的人使用,搞了一段时间,发现浪费时间,服务器的钱都赚不回来,决定把它开源,同时把当时的思路也整理一下。

水滴宝宝提供了web版,官网http://home.ishuidi.cn/,登陆web版可以看到之前通过app上传的照片和视频,既然能看,我们就能想办法把它下载下来。

先登陆web版,登陆后cookie里面有下载照片要用到的关键数据:childidmidtokenfamilyid号,通过这些信息可以组合成相关的协议格式,按指定的格式去请求就能拿到照片信息了。

Cookie:

pgv_pvid=123123; __qc_wId=123123; Hm_lvt_123123=123123; Hm_lpvt_123123=123123; cookie_mid=123123; cookie_pw=123123; weibojs_123123=123123; cookie_token=123123; cookie_username=123123; cookie_phone=123123; cookie_familyId=123123; cookie_child=123123; cookie_bg=1; cookie_islogin=1

 

先看看第一条数据请求信息:

http://home.ishuidi.cn/query_all_growth_list.php

 

 


上图两箭头是关键点,这是第一条照片信息请求的数据格式,通过max_t可以用来索引出所有的信息,上面的请求服务端返回的数据如下:

 

每请求翻一页,web会展示更多的照片,这些照片信息就是通过上次返回的min_t来决定的,每次请求数据,以上次返回的min_t值作为本次请求的max_t值(初始的max_tmin_t0)。

 

如果我往下翻页,便产生第二条请求:

 

图中的max_t:1xxxx3就是上一次返回的min_t,依次类推。。。。。。

具体每张照片、视频的地址信息也是藏在这个response数据里面,json格式,格式比较简单,拿出来分析一下:

 

medias就是每次上传的照片、视频信息(数组格式)i是照片或视频的id号,这是它们的唯一标识,ty是类型,0为照片、1为视频,ct是照片创建的unix时间,拿到这些信息就可以组装成具体的数据请求url,然后去抓取照片和数据,然后通过它们来对数据分类。

拿到信息后,组合url,就能下载文件了http://home.ishuidi.cn/web_download_file.php?id=121313&type=0(如果type1的话,要跟上&mime=mp4后缀)

 

 

当时遇到个问题

1、有些用户有几个宝宝,这样我下载下来的数据就混在一起了,其实是可以结合cookie信息,为每个宝宝建立对应的文件夹,来存放各自的数据。

2、照片下载回来,都已经丢掉了原始的日期信息,需要用服务端返回的ct来修复exif格式里面时间信息,这里我在githubdown了个处理代码来修复时间。

3、水滴宝宝使用的是ucloud的存储服务器,不确定是啥原因,如果请求的文件稍大点,每次都只能请求到一部分数据,导致最终文件格式不对,无法播放,要用断点续传才能解决这个文件,多次尝试,直到数据被下载完(这里我采用wget的断点续传功能,通过多次尝试来下载回所有的文件)


导出工具在这里下载:http://pan.baidu.com/s/1bpMSFUZ

成品界面:


代码在这里:https://github.com/llydd/ishuidi


 



[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
打赏
分享
最新回复 (11)
雪    币: 89265
活跃值: (199334)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2017-2-23 21:33
2
0
поддержка
雪    币: 89265
活跃值: (199334)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2017-2-23 21:49
3
0

llydd感謝你...學習了

雪    币: 102
活跃值: (50)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
nence 2017-2-24 06:54
4
0
很不错,楼主能不能开发一个百度网盘的搜索软件?
雪    币: 123
活跃值: (4939)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wsc 2017-2-24 11:34
5
0
楼主大才!
雪    币: 1487
活跃值: (3386)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
方向感 2017-2-26 21:23
6
0
nence 很不错,楼主能不能开发一个百度网盘的搜索软件?
有现成的网盘搜索网站啊。http://www.sobaidupan.com/
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rukiaHXG 2017-4-8 20:19
7
0
楼主您好,水滴宝宝快关了,我正在用您的代码编译下载工具,可是VS提示无法打开文件curlmtd.lib,请问如何解决?非常感谢!
雪    币: 380
活跃值: (101)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
llydd 9 2017-4-8 21:42
8
0
rukiaHXG 楼主您好,水滴宝宝快关了,我正在用您的代码编译下载工具,可是VS提示无法打开文件curlmtd.lib,请问如何解决?非常感谢!
lib目录就有,编译release
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rukiaHXG 2017-4-8 21:45
9
0
llydd lib目录就有,编译release
一直在线盼着您回复呢,太好了。我下载的lib目录里只有libcurl_mt.lib
雪    币: 112
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
FckTheDog 2017-4-9 01:56
10
0
更期待楼主做爬虫的分析过程~
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wei维维 2017-9-25 02:48
11
0
我现在才发现水滴宝宝不能用了,里面照片都可以保存到手机上了,可是视频都打不开保存不了,整个app不行了,怎么办啊,大神,有没有办法呀,我快崩溃了,好多儿子小时候的事视频,太珍贵了
雪    币: 29
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
换个刀锋 2017-12-2 21:16
12
0
楼主大能,膜拜中
游客
登录 | 注册 方可回帖
返回