写了个批量检测 Apple Store 直营店货源的脚本,可发送钉钉通知 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个创建于 1609 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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