未标题-1.png

几乎一年没有写东西了,这也是我在少数派的第一篇文章,就拿之前的扒视频的action练一下手。

写在前面


Image

事情的起因是想要把微博的中毒视频分享给女朋友(怒撒一把狗粮)。

在Gallery查找相关下载的action确实不尽人意,凭借之前爱好各种应用和电子产品也能摸索Workflow的玩法。

[下载该动作]

工作原理

1、通过抓包分析视频地址;

2、利用workflow提取地址与其他信息,并下载。

制作流程

一、数据分析

1、利用Replica抓取视频地址(这个怎么用我就不写了,和利用小火箭的方法一致,只不过自己控制开关)。

Replica抓包L 界面

2、可以很清楚的看出视频地址的特征:

http://us.sinaimg.cn/一串特征码.mp4?label=mp4_hd&Expires=一串十位的数字码&ssig=又是一串特征码&KID=unistore,video

3、利用Workflow查看网页源代码后可看到这么一段:

<embed type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" quality="high" pluginspage="http://get.adobe.com/cn/flashplayer/" height="480" width="480" src="http://js.t.sinajs.cn/t5/album/static/swf/video/player.swf?_vc355fdbdefd7aa3c" flashvars="list=http%3A%2F%2Fus.sinaimg.cn%2F001BOCWFjx078QSUf8HB01040100GCni0k01.mp4%3Flabel%3Dmp4_hd%26Expires%3D1487597949%26ssig%3D7kPw43YhZ9%26KID%3Dunistore%2Cvideo&fid=1034:7e1e600f40cfd318739454633c7ddc1c&ztshow=&logo=2&uid=&vf=vshow" />

虽然很乱,但是仔细分析可以不难提取出关键的部分:

list=http%3A%2F%2Fus.sinaimg.cn%2F001BOCWFjx078QSUf8HB01040100GCni0k01.mp4%3Flabel%3Dmp4_hd%26Expires%3D1487597949%26ssig%3D7kPw43YhZ9%26KID%3Dunistore%2Cvideo

正好可以对应2中的地址特征。

因此利用Workflow 中的正则表达式可以轻松提取从cn%2F至.mp4之间的特征码(其实是文件名)、Expires%3D和%26之间的十位数字码(其实是个时间戳)、ssig%3D和%26之间的10位特征码(其实我也不知道是什么)。

二、Workflow流程

2.jpg先提取【一、(2)】中的list的字符串。

3.jpg再相对应提取各个特征码。【正则表达式参考:正则表达式30分钟入门

需要解释的是

(?<=匹配前缀)(需要匹配字符串)(?=匹配后缀)

是一个固定的格式,前缀后缀为非必须。

文中(?<=ssig%3D)(\w{10})意思是从ssig%3D往后查找\w{10}(长度为10的字母或数字或下划线或汉字)。Expire同理获取。

4.jpg

最终整合到Text文件中再利用Get Contents of URL进行下载。

三、加入秒拍视频下载

通过使用发现微博视频主要分为us.sinaimg.cn和miaopai.com两大类,其他虽然有但是很少,因此加入秒拍视频抓取进行完善。

同样进行数据抓取播放网址。

379358018914571390.png可以看到反复出现“4wDUIJZWpCOLilw~~nqP8g__”字符串。

741297411300380156.png

查看网页源代码后可以发现出现过8次,但是最容易进行正则表达式抓取的是最后一处。

"scid":"4wDUIJZWpCOLilw~~nqP8g__"

5.jpg利用前述的正则表达式获取该字符串。

6.jpg同理整合到Text文件中再利用Get Contents of URL进行下载。

再优化与完善

1、因为这个动作可以下载两个不同域名的视频,所以可以添加if条件进行分离。

2、考虑到视频文件比较大,存在误触的可能,所以添加了蜂窝/WIFI的判断,利用Get Network Details获取WIFI的名字,无法获取自然是没有WIFI。

需要注意的是,因为是在微博客户端中长按呼出这个动作,所以需要在开始获取该URL以便后面使用,不然先判断是否链接WIFI之后会显示没有URL。

  200226855001323088.jpg

后记

Workflow的确可以称得上AppStore中里程碑式的App,接触它之前和之后使用手机的效率差别巨大,而且定价18元不得不谓之良心。虽然有很多人认为学习成本太高,但是沉浸于研究与探索的乐趣中也许也是一种使用iPhone乐趣。

在下一篇文章中,将分析之前因LeGou的FlashCards而启发背日语单词的重置版本,但是不知道他为什么将该文章删掉。先放个截图。

680359291491676401.jpg