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

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

  •  1
     
  •   LennonChin · 2021-10-19 11:23:45 +08:00 · 5122 次点击
    这是一个创建于 1165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前看到 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 条附言  ·  2021-10-19 19:12:20 +08:00
    添加了 Telegram bot 消息推送。
    第 2 条附言  ·  2021-10-20 11:40:53 +08:00
    今天顺利抢到啦!!!就是有点担心操作太快,身份证号不知道输对没有......好担心

    ![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  
    OP
       2021-10-19 11:26:26 +08:00
    @monkeylmj 一楼先感谢你的脚本。
    LennonChin
        2
    LennonChin  
    OP
       2021-10-19 11:36:18 +08:00
    Apple Watch 简直太难等了,扫了三天,一直没有货源!!!
    whxhjs
        3
    whxhjs  
       2021-10-19 11:41:45 +08:00
    请问可以增加澳门地区的货源嘛
    monkeylmj
        5
    monkeylmj  
       2021-10-19 11:51:54 +08:00
    eggt
        6
    eggt  
       2021-10-19 11:55:53 +08:00 via iPhone
    为啥脚本都不能自动下单啊?是有技术难度还是有什么风险吗?
    LennonChin
        7
    LennonChin  
    OP
       2021-10-19 11:57:15 +08:00
    @eggt 你这问的挺有技术难度的......下单逻辑没研究过,不过起码得输银行卡账号密码吧......
    LennonChin
        8
    LennonChin  
    OP
       2021-10-19 11:57:48 +08:00
    @monkeylmj 哈哈哈哈
    imdong
        9
    imdong  
       2021-10-19 12:12:46 +08:00 via iPhone
    @eggt
    @LennonChin 没难度,不用密码,我写了,自己用的,但我不会放出来,不想给别人当黄牛的机会。
    eggt
        10
    eggt  
       2021-10-19 12:16:12 +08:00 via iPhone
    @imdong 老哥是网页自动化还是接口自动化?
    imdong
        11
    imdong  
       2021-10-19 12:24:18 +08:00 via iPhone
    @eggt 油猴脚本,基于页面状态直接走接口后续请求。

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