i茅台自动预约项目分析

i茅台自动预约项目分析

本文基于GitHub上的一个开源项目——i茅台自动预约

1.需求概述

最近想找个轻松的小项目,可以在每年内赚些零花钱。在GitHub上有个stars略高的i茅台预约项目。作为程序员,自然不会盲目开始就直接部署和使用。我计划先看下源码,再通过抓包工具分析i茅台app的具体实现,看看它的操作流程和描述是否一致,这样才能决定这个项目要不要干下去。

2.项目概述

就不多说了,核心就是i茅台app自动预约,省去每天登陆,或者多号不好操作的问题

3.项目发现的问题

  • 登录缺少加密参数
  • 缺少app內部的行为检测

4. 登录缺少加密参数—-分析

在获取完验证码,调用登录api时出现缺少加密参数

app内抓包的登录请求


curl -H "Host: app.moutai519.com.cn" -H "MT-Network-Type: WIFI" -H "User-Agent: iOS;17.1.2;Apple;iPhone 12" -H "MT-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtdCIsImV4cCI6MTcwNzcwMjA5MywidXNlcklkIjoxMDYzMTE3NDQ1LCJkZXZpY2VJZCI6IkI0MTBBNzlDLTYzMUYtNEVFQS04RUMxLTgxNDNDMzZDRjIzRiIsImlhdCI6MTcwNTExMDA5M30.p_y5PoQ_yLx4xwK_AUUnVwaVse2KZGemhca9X8dpGUI" -H "MT-V: d422bcc4a6e7821916c10c69a80" -H "MT-User-Tag: 0" -H "MT-R: clips_OlU6TmFRag5rCXwbNAQ/Tz1SKlN8THcecBp/HGhHdw==" -H "MT-K: 1705159334853" -H "MT-Team-ID: " -H "MT-APP-Version: 1.5.6" -H "MT-Request-ID: 170515933485328803" -H "Accept-Language: zh-Hans-US;q=1, en-US;q=0.9" -H "MT-Device-ID: B410A79C-631F-XXXX-XXXX-8143C36CF23F" -H "Accept: */*" -H "Content-Type: application/json" -H "MT-Bundle-ID: com.moutai.mall" -H "BS-DVID: Do1Z5jKxnf2tzgtILD41RJ1ONNPJnYnyTR9bO56PAYd2oNWrpInl_shfdrD9QKxu_XKu0FoyYBhVHAz5ufrWfNA" --data-binary "{\"ydToken\":\"\",\"mobile\":\"99999999999\",\"vCode\":\"662488\",\"ydLogId\":\"\"}" --compressed "https://app.moutai519.com.cn/xhr/front/user/register/login"

response:{"code":2000,"data":{"userId":123,"userName":"陈**","mobile":"137****0817","verifyStatus":1,"idCode":"440333116101020037","idType":0,"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtdCIsImV4cCI6MTcwNzc1MTMzNSwidXNlcklkIjoxMDYzMTE3NDQ1LCJkZXZpY2VJZCI6IkI0MTBBNzlDLT04RUMxLTgxNDNDMzZDRjIzRiIsImlhdCI6MTcwNTE1OTMzNX0.1gW5aXJV8wY4DvCHiRNaevm5aPHfqWZSy18r6XELYtg","userTag":0,"cookie":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJtdCIsImV4cCI6MTcwNzc1MTMzNSwidXNlcklkIjoxMDYzMTE3NDQ1LCJkZXZpY2VJZCI6IkI0MTBBNzlDLTYzMUYtNEVFQS04RUMxLTgxNDNDMzZDRjIzRiIsImlhdCI6MTcwNTE1OTMzNX0.sKSsgoBnvTZt395zY3ph5JcH8rAY4nDdCD_bZvdcbp0","did":"did:mt:1:0x72b42907de997b645e9c64625e24ba61af7c63a36931948d8bffb6efa2f9dde8","birthday":""}}

根据上面的的抓包信息可得,请求header参数应该是有(忽略部分我认为不重要的)

  • MT-Token: XXXX
  • MT-V: d422bcc4a6e7821916c10c69a80
  • MT-User-Tag: 0
  • MT-R: clips_OlU6TmFRag5rCXwbNAQ/Tz1SKlN8THcecBp/HGhHdw==
  • MT-K: 1705159334853
  • MT-Request-ID: 170515933485328803
  • BS-DVID: Do1Z5jKxnf2tzgtILD41RJ1ONNPJnYnyTR9bO56PAYd2oNWrpInl_shfdrD9QKxu_XKu0FoyYBhVHAz5ufrWfNA

github项目登录代码:

    @Override
    public boolean login(String mobile, String code, String deviceId) {
        Map<String, String> map = new HashMap<>();
        map.put("mobile", mobile);
        map.put("vCode", code);

        final long curTime = System.currentTimeMillis();
        map.put("md5", signature(mobile + code + "" + "", curTime));

        map.put("timestamp", String.valueOf(curTime));
        map.put("MT-APP-Version", getMTVersion());

        HttpRequest request = HttpUtil.createRequest(Method.POST,
                "https://app.moutai519.com.cn/xhr/front/user/register/login");
        IUser user = iUserMapper.selectById(mobile);
        if (user != null) {
            deviceId = user.getDeviceId();
        }
        request.header("MT-Device-ID", deviceId);
        request.header("MT-APP-Version", getMTVersion());
        request.header("User-Agent", "iOS;16.3;Apple;?unrecognized?");
        request.header("Content-Type", "application/json");

        HttpResponse execute = request.body(JSONObject.toJSONString(map)).execute();

        JSONObject body = JSONObject.parseObject(execute.body());

        if (body.getString("code").equals("2000")) {
//            logger.info("「登录请求-成功」" + body.toJSONString());
            iUserService.insertIUser(Long.parseLong(mobile), deviceId, body);
            return true;
        } else {
            logger.error("「登录请求-失败」" + body.toJSONString());
            throw new ServiceException("登录失败,本地错误日志已记录");
//            return false;
        }

    }

可见,登录的时候已经少了几个加密参数MT-V,MT-K等,但经我后续测试预约等其他api,缺少加密参数获取到的登录token和cookies依然是有效可用的

5.缺少app內部的行为检测

i茅台app内部接入了风控sdk:昊天镜。。。还以为是什么风控产品,原来是百度的。。

观察了一下,大部分操作都会不断提交记录到风控sdk,当然内容加密了,我也没详细去看了

i茅台自动预约项目是没有上传类似行为到这个sdk的,所以你懂的

6. 真实群友反馈

wechat-msg-1
this
wechat-msg-2
后续就是连续申请几天西藏之类的茅台,中奖率几乎接近100%,但还是不中

7.结论

可能i茅台是故意而为之,明明缺少了加密参数和缺少app行为记录的用户,依然是可以正常申购的(为了热度,等多点人来凑热闹?)

最后分析,当i茅台得知这个用户是缺少加密参数和app行为记录的(参考jd skill的做法,低水平的用户不是不抢不到茅台,而是很低几率)。。所以用这个自动预约茅台是不推荐的。万一i茅台不是实时算法,而是永久固定低分用户,就是代表你用过自动预约后,就被系统认定是非法用户,永远抢不到or永远都是超低几率抢到。

偷懒赚钱机会-1

评论

  1. 小强
    10 月前
    2024-3-22 3:04:41

    6

  2. pp
    10 月前
    2024-3-24 18:39:01

    大佬

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇