爱意满满的作品展示区。
wuhx

山寨了一个 IFTTT

  •  1
     
  •   wuhx · Apr 24, 2017 · 12945 views
    This topic created in 3483 days ago, the information mentioned may be changed or developed.
    http://xun.im/2017/04/23/cloudmonad/

    TLDR;
    CloudMonad 可以这样玩:

    1.发一条微信消息,推送到你的 Kindle 或者一个私有的 Rss 源。

    2. 定时获取京东商品的价格和优惠信息,在满足指定条件后发送一条微信通知消息。

    3. 定时访问 12306 网站查询或购买车票。

    4. 定时登录微信公众号后台发文。
    Supplement 1  ·  Apr 25, 2017
    作为一个 one man 项目, CloudMonad 希望能以云服务的形式提供
    比如一个用例是: V2EX 上经常会看到一些网友写各种网站的自动签到脚本,这些脚本可能花半小时就搞定了,但后续还要找服务器运行,各种管理维护, CloudMonad 就可以一站式解决这个需求。

    IFTTT 的发展困境是主流用户觉得操作太复杂,只能是一个小众产品。
    而相比之下 CloudMonad 的操作会更复杂(面对的是非格式化的 Web , Spec 检测粒度更小等),如何吸引更多用户会是个问题。

    CloudMonad 今后的发展,我能想到的大概有三个方向:
    1. 专注提供一个小众服务,完善 UI ,哪怕只有 IFTTT 0.1%用户也差不多了。
    2. 提供定制 Api 给第三方使用,为每种 Feed 提供一个 Rest 调用接口。
    3. 做成一个类似 App 市场的平台,有定制能力的高级用户,把各种功能配置好,打包成一个一键安装的的应用供小白用户使用,来降低使用门槛。

    诸位有什么建议?
    50 replies  •  2017-05-20 08:19:22 +08:00
    ixinshang
    ixinshang
    Apr 24, 2017 via Android
    1
    34 厉害了
    mekhi
    mekhi
    Apr 24, 2017 via iPhone
    2
    把多说评论换了吧
    mawing
    mawing
    Apr 24, 2017
    3
    试用(注册)的链接是 127.0.0.1
    achaocha
    achaocha
    Apr 24, 2017
    4
    试用(注册)的链接是 127.0.0.1
    wuhx
    wuhx
    OP
    Apr 24, 2017 via Android
    6
    @mawing
    @achaocha 请看 5 楼
    wuhx
    wuhx
    OP
    Apr 24, 2017 via Android
    7
    @mekhi 有什么推荐的替代品?
    42V0CdLjCU494ogF
    42V0CdLjCU494ogF
    Apr 24, 2017
    8
    厉害了
    mekhi
    mekhi
    Apr 24, 2017 via iPhone
    9
    @wuhx 国内的话,可以试试畅言
    gyorou
    gyorou
    Apr 24, 2017
    10
    LZ 造轮子辛苦了。 https://github.com/cantino/huginn
    wuhx
    wuhx
    OP
    Apr 24, 2017❤️1
    11
    @gyorou 多谢提供这个信息,

    仔细看了一下,这两者有很多不样的地方。

    huginn 还是一个传统爬虫加一些 pipe 函数做数据处理。
    而 CloudMonad 注重的是浏览过程和交互,比如说我要获取 V2EX 分页帖子的所有回复,一般爬虫的做法是以页码为参数自动生成的分页 url 地址分别采集,而 CloudMonad 会去
    下一页那个按钮,然后不停的点击采集,只到最后一页(当然也支持拼 url 的方式)。
    看了一下 huginn 的自定义 Agent 格式,只有 extract 字段,应该不支持任何交互。这样它的采集能里就会很弱,而演示中哪些看上去很酷的图表,
    其实只是最基本的数据处理,完全可以把这两部分分开来么,
    数据采集用「造数」这类专业的爬虫,然后自建一个 Hadoop 之类数据中心,定时把数据丢进去分析,专业性和稳定性瞬间就提升一个档次了。

    另外,CloudMonad 在设计之初有一个小目标:要在尽可能低的系统资源下支持高扩展性(Scalable),而爬虫特别是 Headless 浏览器是高资源消耗操作,
    如何在系统低载时尽可能少的消耗资源,又能应付突发大流量请求是一个难题。最后的解决方案是各种按需付费的云服务。
    CloudMonad 用了多种云资源,
    包括一个整合了阿里云 MNS 和亚马逊 SQS 双备份的 CloudQueue 用于任务分发。
    LeanCloud 数据库配合阿里云 OSS 用于前后端通信。
    IBM 的 openwhisk ,亚马逊的 Lambda , DigitalOcean 按需使用的虚拟主机用于动态调整资源。
    目前整个 CloudMonad 系统的硬性支出只有一台阿里云最低配虚拟主机,其他资源都是按需使用的,目前还都在免费额度内(当然,用户少:()
    那台阿里云虚拟机上运行着一个 Akka node 用于协调资源,用户管理等工作,具体的脏活都时候外包给其他云服务做。

    说回 huginn ,它似乎更像一个传统的单机版应用,需要安装 mysql 数据库,对系统要求也很高。
    github 首页还挂着一个一年前的内存泄漏 issue ,系统的水平扩展会很成问题
    fhefh
    fhefh
    Apr 24, 2017
    12
    厉害 mark
    mingyun
    mingyun
    Apr 24, 2017
    13
    厉害了
    gyorou
    gyorou
    Apr 25, 2017
    14
    @wuhx
    首先能造出这么一个轮子的确很厉害。
    不过我还是为 huggin 更正一下。 huggin 可以自己定制 Agent gem ,所以所谓的模拟用户行为之类的是完全没有问题的。
    CloudMonad 用了多种云资源, 而 huggin 只是一个传统 Rails 应用加 Sidekiq 的任务管理而已,用 docker-compose 就可以快速起来,安装在任何可以跑 docker 的主机上完全没有问题。整个过程不用超过 5 分钟。比起要使用各种云服务,一台简单的 VPS 即可。
    wuhx
    wuhx
    OP
    Apr 25, 2017
    15
    @gyorou 是的, docker 是部署应用程序的神器。 openwhisk 其实就是一个即销即用的 Docker 镜像。
    Comdex
    Comdex
    Apr 25, 2017
    16
    楼主,我想请教一下,就比如那个京东商品价格监控的,是使用 cron 定时执行,定时任务多时怎么优化
    Comdex
    Comdex
    Apr 25, 2017
    17
    还有有没办法实现秒级监控且能合理控制服务器资源
    wuhx
    wuhx
    OP
    Apr 25, 2017
    18
    @Comdex CloudMonad 用的定时器就是秒级定时的,但后台有限制, 5 分钟之内最多执行一次。
    mosliu
    mosliu
    May 3, 2017
    20
    @wuhx 赞一个 设了一个自动刷微信运动步数的试试看。
    evin
    evin
    May 4, 2017
    21
    注册需要邀请码。。。
    wuhx
    wuhx
    OP
    May 4, 2017
    22
    @evin 邀请码是可选的,目前开放注册中

    @mosliu 并没有这个功能
    mosliu
    mosliu
    May 5, 2017
    23
    @wuhx 调用自己的服务 = =!
    GrahamCloud
    GrahamCloud
    May 5, 2017
    24
    这里是 造数的开发团队,很多启发, 求联系 @wuhx,微信:Zaoshuio
    bestrenxs
    bestrenxs
    May 5, 2017
    25
    思路很好,学习了!
    wuhx
    wuhx
    OP
    May 5, 2017
    26
    @mosliu 特别需要你这样的用户 :)

    @GrahamCloud 已加

    @bestrenxs 谢谢
    mosliu
    mosliu
    May 5, 2017
    27
    @wuhx feed 现在不支持是 Api 啊。。
    wuhx
    wuhx
    OP
    May 5, 2017
    28
    @mosliu 如果你的服务支持 Rest Api,可以用 RestAction 触发调用,参考调用方糖发送微信消息那个例子。
    johnnie502
    johnnie502
    May 9, 2017
    29
    可否加上 telegram bot 的支持?
    wuhx
    wuhx
    OP
    May 9, 2017
    30
    @johnnie502
    Telegram 提供了 Rest Api 接口,所以 CloudMonad 是直接支持的,
    请参考: http://xun.im/2017/04/23/example-rest-api/

    测试用 telegram bot 发送京东降价通知,完全没问题,感觉 Telegram 比微信这种封闭环境对程序员友好多了,可惜被墙,使用不太方便。

    telegram 的 Api 类似于:
    GET https://api.telegram.org/bot372908708:AAElXimm0on8TRnjzZK0Hf313C97XgW3_WM/sendMessage?chat_id=391625028&text=降价通知 {商品} {价格}

    chat_id 是你的帐号 id,botkey 是我建的测试机器人的,你可以自己建一个
    提交前请在本地用 curl 测试一下。

    [CloudMonad 测试机器人]( https://telegram.me/cloudmonad_bot)
    johnnie502
    johnnie502
    May 9, 2017
    31
    @wuhx 谢谢测试!这些 API 我也测试过(用 curl ),很好用。希望 cloudmonad 能有个用户友好的前端支持,这个才是您的服务的主要含金量所在吧
    johnnie502
    johnnie502
    May 9, 2017
    32
    @wuhx 被墙的话在外国主机用 nginx 做个反代就行了,看你网站是用了国外 VPS 的
    wuhx
    wuhx
    OP
    May 9, 2017
    33
    @johnnie502 是的,CloudMonad 的 UI 易用性有待加强,但这里的问题主要是没有针对 Telgram 设计 UI,走的是通用的 RestApi Action。

    另外,CloudMonad 的主要优势是用户可以将 Feed,Spec,Action 自由组合
    比如 Feed 用了京东价格监控, 就可以用 {商品} {价格} 的形式,把动态获取的价格信息发给用户(可以用 Telegram,也可以用微信等其他方式)
    johnnie502
    johnnie502
    May 9, 2017
    34
    @wuhx 我人在国外,所以对京东价格监测这些不是很敏感。如果要扩展海外用户的话(看到了英文版),可以也做做亚马逊之类的价格监控,应该能吸引一些用户。
    wuhx
    wuhx
    OP
    May 10, 2017
    35
    @johnnie502
    京东只是一个例子,亚马逊可以通过 FetchUrl Feed 支持

    参考
    [例 5:使用 FetchUrl 实现将任意网站作为输入源]( http://xun.im/2017/04/23/example-fetch-url/)

    在参数绑定界面,把 url 换成你想监控的商品:如
    https://www.amazon.com/Sony-VPLVW365ES-Native-Theater-Projector/dp/B016IL60LM/

    content 换成
    #priceblock_ourprice

    即能实现定时监控亚马逊价格,配合 Telegram 或其他方式通知。

    当然这样的操作对用户不够友好,最终版本会考虑用鼠标点击选取目标的形式。
    Damaidaner
    Damaidaner
    May 10, 2017
    36
    LZ 厉害了, 马克一下
    jijifly
    jijifly
    May 10, 2017
    37
    楼主想请教一下,此类产品如何突破网站爬虫限制频率?
    比如有很多个用户关注了不同商品的京东价格,最终结果可能是每秒钟爬取 N 次京东的数据,势必会引来京东的 IP 封锁,楼主是如何处理的呢? @wuhx
    wuhx
    wuhx
    OP
    May 10, 2017❤️1
    38
    @jijifly 首先爬虫是分布式的,同一个 IP 不会用每秒 N 次这么高的频率访问同一个网站
    其次,后台在调度的时候也会考虑将相同目标网站的请求分散开来,或者也可以自建或购买 IP 代理池。

    另外,CloudMonad 的爬虫是用户自己定制的,用户在创建的时候,可以指定专门的代理地址,Cookie 等,会比普通爬虫更难检测。
    jinfeng333
    jinfeng333
    May 11, 2017
    39
    不错 👍
    kenshinji
    kenshinji
    May 12, 2017 via iPhone
    40
    码一个
    wuhx
    wuhx
    OP
    May 12, 2017
    41
    新增一个栗子
    [利用 CloudMonad 从微信发送消息到钉钉]( https://zhuanlan.zhihu.com/p/26876277)

    另外根据每个 Feed/Action 的稳定性,新增了[版本周期]说明,比如微信消息接收 Feed 相对稳定其状态为 Stable,微信消息发送 Action 在系统并发量多的时候偶尔会丢失消息状态为 Experimental。

    请在试用的时候,尽量选择 Stable 的例子。
    ideacco
    ideacco
    May 15, 2017
    42
    希望能增加硬件支持,我倒是觉得硬件这块儿发展空间巨大。物联网一定会到的。
    Vkin
    Vkin
    May 16, 2017
    43
    监控京东价格,有变化自动发送到 qq ?
    xuwenhao
    xuwenhao
    May 16, 2017
    44
    @ideacco 非常同意,如果楼主决定拿这个创业的话,考虑个人投点小钱 :-)
    lada04
    lada04
    May 17, 2017
    45
    没找到,在哪里修改 已创建好的任务
    wuhx
    wuhx
    OP
    May 18, 2017
    46
    @ideacco
    是的,万物互联,想想都激动
    后续可以提供一些 Iot 类型的 Feed
    或者定义一个物联网网关,通用 Restful Api 和 CloudMonad 集成。
    wuhx
    wuhx
    OP
    May 18, 2017
    47
    @Vkin
    目前不支持 QQ,你可以自己包装一个发送 QQ 消息的 RestApi,然后参考 方糖 /Telegram/钉钉 的例子和 CloudMonad 集成。
    wuhx
    wuhx
    OP
    May 18, 2017
    48
    @xuwenhao 非常感谢
    wuhx
    wuhx
    OP
    May 18, 2017
    49
    duhai973
    duhai973
    May 20, 2017
    50
    fetchurl 感觉有点弱啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5009 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 02:11 · PVG 10:11 · LAX 18:11 · JFK 21:11
    ♥ Do have faith in what you're doing.