查看原文
其他

【WF教程】Workflow从进阶到搬砖

是你的 花果科技 2020-02-27

《Workflow从进阶到搬砖 》

作者:Hhd


原贴http://t.cn/REA8CdY    持续更新中...

此教程将会对Workflow进阶者有很大帮助


前排提示:
此教程对萌新不友好!
建议萌新看看《Workflow从0到1》(作者:红V)


首先让我们看看一个神奇的动作“Get Contents from URL”
据楼主统计(猜想),80%的规则都用到了这个动作



这个动作可以发送http请求,有五种方法可选。

分别为 Get、Post、Put、Patch和Delete
最常用的两个方法为Get和Post,本教程着重会讲这两个方法



使用Get可以获取服务器上的某一文件,或某网页的富文本

下面有两个例子


获取目录「2018/02/07」内的5a7a555fcc003.jpg这张图



获取某一网页富文本



可以用动作“Make HTML from Rich Text”来获取网页源码



Workflow也支持自定义请求头
放在Headers里就可以了
如下图,定义了Cookie和User-Agent的值



讲到这里顺便说说百度贴吧签到是什么原理吧。
百度的登录信息保存在Cookie的BDUSS里,那只要知道了贴吧签到的api,再发送请求,就可以模拟签到了

这里的User-Agent是iPhone的User-Agent,因为手机端签到经验比较多


把方法改为Post后,下面多出来两行。
点击第一行,可以选择Request Body,分 JSON、Form和File(文件)
Get Content from URL在Post时可以不在Headers填Content-Type,要根据Content-Type来选择Request Body,这样会把下面的数据转换成对应的格式。
JSON会把数据转成 {"foo": "bar"} 的格式
Form会把数据转成 foo=bar&baz=biz 的格式
File用来上传文件用



下面一个是和图灵机器人对话的例子
一个是注册网站会员的例子




对于其他三个方法,简略说一下
Put和Post差不多,都可以上传文件
Delete用来删除资源
至于Patch我也不大清楚



下面来说说如何对获取到的内容进行读取


Content一般为JSON,但因为格式问题,需要经过一定的处理才可以通过Key获取value

这时候,看字体是很重要的。
如果内容字体为宋体(如下面第一张图),应该先在后面加Make HTML from Rich Text,这时就会变成Courier体(如下面第二张图)




如果直接是Courier体,就在后面用Get Dictionary Value试试可不可以获取到某个值。
如果不行,就在后面再加上Get Dictionary from Input



注意:Workflow对Array的支持不友好,无法直接将Array转为items。

顺便再来讲讲Get Dictionary from Input吧。这个动作有一个神奇的功能,就是对Unicode编码过的文本解码。
下面的JSON的value都经过了编码,但是加了Get Dictionary from Input后全部解码了




这样就是一个简单的Unicode解码器



它还可以把 foo=bar&baz=biz 的格式转为JSON格式



现在再来说说如何将Array变成items
在Dictionary动作中,是可以添加Array的,但这里的Array是某个键的值
所以只要把Array放到Dictionary里就可以了




怕很多人看不懂,我准备出一个专题【用Workflow发送Thor抓到的请求】

Thor是一款iOS抓包工具,可以去App Store购买下载,支持一下dake



我这里抓了搜狗颜文字网站,现在要找出获取颜文字的api



因为返回数据通常为JSON,所以先在过滤器里将数据类型过滤为文本



过滤完后会发现请求数少了很多,接下来在这些请求里筛选
api通常是ajax编写,所以要看看链接里包不包含“ajax”“php”“aspx”的字符。
有些api是公开的,所以再看看哪个链接包含“api”字符。
经过上面两步的筛选,数目又少了很多,接下来就是查看一个个请求的返回数据里有没有想要的内容(比如我抓的是颜文字,那就看看哪个请求返回了很多颜文字)
经过这些筛选,我已经确定了一个接口




然后进入概览,找到HTTP方式,这里写的是什么动作里就怎么填




如果方式为POST,就来到请求头,找到Content-Type。

如果Content-Type为application/json,RequestBody就选择JSON;
如果Content-Type为application/x-www-form-urlencoded,RequestBody就选择Form



来到消息体查看数据,按照格式在Workflow输入数据






最后运行规则,就有结果啦


 持续更新中...

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存