V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LennonChin
V2EX  ›  Apple

写了个批量检测 Apple Store 直营店货源的脚本,可发送钉钉通知

  •  1
     
  •   LennonChin · 39 天前 · 2504 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前看到 V 友 @monkeylmj 的帖子 iPhone13Pro 抢到了,这几天研究的抢货手段给大家一些经验 分享的监控脚本,因此在他的基础上做了改进,可监控多种产品,并且可以把通知发送到钉钉。

    GitHub 传送门:https://github.com/LennonChin/AppleStore-Monitor

    建议合理使用,不要设置扫描时间太短,以免 IP 被封。

    下面是 GitHub 的 README,直接贴过来了:

    概述

    本项目应用主要用来监测 Apple Store 线下直营店货源情况,主要使用 Python 实现。

    首先感谢iPhone-Pickup-Monitor项目带来的灵感,同时有些实现也直接使用了该项目的一些代码。

    本项目在 iPhone-Pickup-Monitor 原有功能的基础上去掉了声音通知,但添加了多货源同时监控以及钉钉消息通知功能。

    安装

    # 拉取代码 
    git clone https://github.com/LennonChin/AppleStore-Monitor.git
    
    # 进入目录
    cd AppleStore-Monitor
    
    # 安装依赖
    pip install -r requirements.txt
    

    申请钉钉群机器人

    [强烈建议配置] 如不配置则没有通知功能。

    本监控提供了钉钉监控的功能,可以在监控到有货源时将消息发送到钉钉群。如要启用该功能,首先需要创建一个钉钉群,并添加群机器人,详细可参考文档:

    自定义机器人接入

    机器人配置完毕后,记下相关的 Access Token 和 Secret Key,后面配置时需要用到。

    开始配置

    可以配置多个监控商品:

    $> python /User/LennonChin/Codes/AppleStore-Monitor/monitor.py config
    --------------------
    [0] AirPods
    [1] iPhone 13
    选择要监控的产品:0
    --------------------
    [0] AirPods
    [1] AirPods Max
    选择要监控的产品子类:1
    --------------------
    [0] AirPods Max - 银色
    选择要监控的产品型号:0
    --------------------
    是否添加更多产品[Enter 继续添加,非 Enter 键退出]:
    --------------------
    [0] AirPods
    [1] iPhone 13
    选择要监控的产品:1
    --------------------
    ...
    [3] iPhone 13 Pro Max
    选择要监控的产品子类:3
    --------------------
    ...
    [11] 512GB 远峰蓝色
    ...
    选择要监控的产品型号:11
    --------------------
    是否添加更多产品[Enter 继续添加,非 Enter 键退出]:n
    选择计划预约的地址:
    请稍后...1/3
    --------------------
    [0] 北京
    [1] 上海
    ...
    请选择序号:1
    请稍后...2/3
    请稍后...3/3
    --------------------
    [0] 黄浦区
    ...
    请选择序号:0
    正在加载网络资源...
    --------------------
    输入钉钉机器人 Access Token[如不配置直接回车即可]:# 此处如不配置,就没有通知功能
    输入钉钉机器人 Secret Key[如不配置直接回车即可]:# 此处如不配置,就没有通知功能
    --------------------
    输入扫描间隔时间[以秒为单位,默认为 15 秒,如不配置直接回车即可]:30 # 不建议太短,以免扫描过于频繁导致 IP 被封
    扫描配置已生成,并已写入到 apple_store_monitor_configs.json 文件中
    请使用 python /User/LennonChin/Codes/AppleStore-Monitor/monitor.py start 命令启动监控
    

    配置完成后,会在当前目录下生成一个apple_store_monitor_configs.json文件:

    {
      "selected_products": {
        "MGYJ3CH/A": [
          "AirPods Max",
          "AirPods Max - \u94f6\u8272"
        ],
        "MLHG3CH/A": [
          "iPhone 13 Pro Max",
          "512GB \u8fdc\u5cf0\u84dd\u8272"
        ]
      },
      "selected_area": "\u4e0a\u6d77 \u4e0a\u6d77 \u9ec4\u6d66\u533a",
      "dingtalk_configs": {
        "access_token": "",
        "secret_key": ""
      },
      "scan_interval": 30
    }
    

    如果你明白每项的意思,也可以手动填写该 JSON 文件,不过一定要按照上面例子中的层级,尤其是selected_products部分。

    另外欢迎各位补充本项目的products.json文件,添加更多产品信息。

    启动监控

    接下来只需要用下面的命令启动监控即可:

    比如前台启动:

    $> python /User/LennonChin/Codes/AppleStore-Monitor/monitor.py start
    

    或者后台启动:

    $> nohup python -u monitor.py start > monitor.log 2>&1 &
    

    通知效果

    4 种情况会通知:

    1. 启动时通知,以确认相关信息是否正确,启动是否成功。
    2. 扫描到有货源时会通知。
    3. 每天 6:00 ~ 23:00 整点报时,以确保程序还正常运行。
    4. 程序异常时会通知,如不是致命异常,不用理会。

    相关通知截图:

    NotificationExample.png

    第 1 条附言  ·  39 天前
    添加了 Telegram bot 消息推送。
    第 2 条附言  ·  38 天前
    今天顺利抢到啦!!!就是有点担心操作太快,身份证号不知道输对没有......好担心

    ![https://i1.100024.xyz/i/2021/10/20/iu9rnb.png]( https://i1.100024.xyz/i/2021/10/20/iu9rnb.png)
    ![https://i1.100024.xyz/i/2021/10/20/iua5ex.png]( https://i1.100024.xyz/i/2021/10/20/iua5ex.png)
    33 条回复    2021-10-26 10:47:10 +08:00
    LennonChin
        1
    LennonChin   39 天前
    @monkeylmj 一楼先感谢你的脚本。
    LennonChin
        2
    LennonChin   39 天前
    Apple Watch 简直太难等了,扫了三天,一直没有货源!!!
    whxhjs
        3
    whxhjs   39 天前
    请问可以增加澳门地区的货源嘛
    monkeylmj
        5
    monkeylmj   39 天前
    eggt
        6
    eggt   39 天前 via iPhone
    为啥脚本都不能自动下单啊?是有技术难度还是有什么风险吗?
    LennonChin
        7
    LennonChin   39 天前
    @eggt 你这问的挺有技术难度的......下单逻辑没研究过,不过起码得输银行卡账号密码吧......
    LennonChin
        8
    LennonChin   39 天前
    @monkeylmj 哈哈哈哈
    imdong
        9
    imdong   39 天前 via iPhone
    @eggt
    @LennonChin 没难度,不用密码,我写了,自己用的,但我不会放出来,不想给别人当黄牛的机会。
    eggt
        10
    eggt   39 天前 via iPhone
    @imdong 老哥是网页自动化还是接口自动化?
    imdong
        11
    imdong   39 天前 via iPhone
    @eggt 油猴脚本,基于页面状态直接走接口后续请求。

    但是最近苹果商店频道 404 非常不稳定,准备移植到 node 全部走接口。
    yinshilun
        12
    yinshilun   39 天前 via iPhone
    请问有 watch 的配置文件么,一直想等个 watch 的到店取货…
    MX123
        13
    MX123   39 天前
    没有 Apple watch 吗?
    zhuang0718
        14
    zhuang0718   39 天前
    同等一个 aw 的到店取货 一直刷不到 好难等
    byuan04
        15
    byuan04   39 天前
    不晓得能否支持下 [Server 酱] ,直接推送到微信?
    https://sct.ftqq.com/forward
    LennonChin
        16
    LennonChin   39 天前
    @MX123
    @yinshilun
    @zhuang0718 可以去官网找找编码,按格式更新到 products.json 文件里就可以了。
    LennonChin
        17
    LennonChin   39 天前
    @byuan04 看了下这个集成挺简单的,但服务要收费啊,免费的一天只能发五条……
    byuan04
        18
    byuan04   39 天前
    @LennonChin 不是。。和你哪个给 key 一样,自己给自己推每天可以 5 条免费 (不是所有人一起五条
    LennonChin
        19
    LennonChin   39 天前
    @byuan04 是啊,一个人一天 5 条,🌝🌝,我这写的每到整点就会发一条,方便检查应用是不是正常,5 条都不够发😂
    muunala10221
        20
    muunala10221   39 天前
    安装上了 挺好的,能加个 m1 pro 的监测嘛
    byuan04
        21
    byuan04   39 天前
    @LennonChin 🌝也对 那来个间隔自定义?
    charliecaptain
        22
    charliecaptain   39 天前 via Android
    @imdong 你抢到了吗
    jfdnet
        23
    jfdnet   39 天前
    macbook pro 不至于需要抢购吧。
    ooops
        24
    ooops   39 天前 via iPhone
    跑个题:请稍候
    ronn
        25
    ronn   38 天前
    感谢感谢,试下能不能抢到,还有就是提个功能需求,能不能具体到某个店,本地只有一个店,选地区会监测好多其它地区的店
    LennonChin
        26
    LennonChin   38 天前
    @ronn 后面看看能不能加
    LennonChin
        27
    LennonChin   38 天前
    @ronn 排除功能已添加,现在可以在配置过程中排除你不想监测的店
    LennonChin
        28
    LennonChin   38 天前
    @yinshilun
    @MX123
    @zhuang0718 已经添加了部分 aw 的配置
    LennonChin
        29
    LennonChin   38 天前
    @muunala10221 这个目前还没有添加配置,后面有时间收集收集型号。
    另外看有万能的 V 友能不能搞到全型号,手动收集太麻烦了。。。
    zhuang0718
        30
    zhuang0718   38 天前
    @LennonChin #28 感谢老哥!!
    yinshilun
        31
    yinshilun   38 天前 via iPhone
    @LennonChin 看到啦!谢谢!!!
    rootsir
        32
    rootsir   35 天前 via iPhone
    扫到了 Apple watch 已下单 感谢
    LennonChin
        33
    LennonChin   32 天前
    @rootsir 哈哈,恭喜,我之前也是用这个扫到的,用处还是有
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1019 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:21 · PVG 04:21 · LAX 12:21 · JFK 15:21
    ♥ Do have faith in what you're doing.