写了个批量检测 Apple Store 直营店货源的脚本,可发送钉钉通知 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LennonChin
V2EX    Apple

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

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

    之前看到 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     Solana     978 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 119ms UTC 23:00 PVG 07:00 LAX 16:00 JFK 19:00
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86