吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7259|回复: 103
收起左侧

[其他原创] 【开源软件】一个自己写的 i茅台 预约软件

  [复制链接]
qiucx 发表于 2024-5-9 17:10
bin/debug目录里有编译好的exe,可以直接用。
1. 自己写了验证码登录、预约功能,登录的数据可保存。下次登录软件就不用在验证码登录了,直到这个cookie过期。
2. 需要自己把要抢的个人信息先做个配置在userconfig.json,第一次使用费力点,但以后就不用了。
{
        "data": [{
                        "mobile": "13511111111",   #手机号码样例
                        "shopIds": "100330100004@133330100001@100330100002@133330100002@22330100025001@133330121002",   #自己身边的茅台店id 优先级从左到右,由高到低
                        "province": "浙江省",
                        "deviceId": "21EC2020-3AEA-1069-A2DD-08002B30309D",   #设备id  网上可以搜索或者自己生成,说白了就guid的随机码,不知道有没有影响,不同肯定好点
                        "productIds":"10941@10942",     ##需要抢的产品代码
                        "params":"MT-K:1695430951361@MT-Lng:121.231099@MT-Lat:31.272769"  ##经纬度
                }
        ]
}
注:不喜欢的请别下载,下载了觉得不好的请别抱怨,特别是吹毛求疵的朋友还是不要下为好。觉得好的点个赞、评个分,尊重一下别人的劳动成果。下一步开发自动预约的。
iMaoTai.zip (1.36 MB, 下载次数: 1011)
主程序截图1.png





主要功能代码如下:


[C#] 纯文本查看 复制代码
/// <summary>[/size]
[size=14px]        /// 发送验证码[/size]
[size=14px]        /// </summary>[/size]
[size=14px]        /// <returns></returns>[/size]
[size=14px]        public string RequestCode()[/size]
[size=14px]        {[/size]
[size=14px]            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));[/size]
[size=14px]            long t = (DateTime.Now.Ticks - startTime.Ticks) / 10000;[/size]
[size=14px] [/size]
[size=14px]            var timestamp = t;[/size]
[size=14px]            JObject param = new JObject{[/size]
[size=14px]                { "mobile", this.UserName },[/size]
[size=14px]                { "md5", Signature(this.UserName,timestamp) },[/size]
[size=14px]                {"timestamp",timestamp+""}[/size]
[size=14px]            };[/size]
[size=14px] [/size]
[size=14px]            string string_ = param.ToString();[/size]
[size=14px]            //Hashtable headers = new Hashtable();[/size]
[size=14px]            //headers.Add("firmId","82610");[/size]
[size=14px]            this.request.DeviceId = GetDeviceId(this.UserName);[/size]
[size=14px]            string result = this.request.RequestCode("https://app.moutai519.com.cn/xhr/front/user/register/vcode", null, string_);[/size]
[size=14px]            var jObject = JObject.Parse(result);[/size]
[size=14px]            if (jObject.GetValue("code").Value<int>() != 2000)[/size]
[size=14px]            {[/size]
[size=14px]                throw new InvalidOperationException("发送验证码失败:" + result);[/size]
[size=14px]            }[/size]
[size=14px] [/size]
[size=14px]            return result;[/size]
[size=14px]        }[/size]
[size=14px] [/size]
[size=14px]        public string Login()[/size]
[size=14px]        {[/size]
[size=14px]            JObject param = new JObject{[/size]
[size=14px]                                { "mobile", this.UserName },[/size]
[size=14px]                { "ydToken", "" },[/size]
[size=14px]                {"vCode",this.Code},[/size]
[size=14px]                {"ydLogId",""}[/size]
[size=14px]            };[/size]
[size=14px]            string string_ = param.ToString();[/size]
[size=14px]            this.request.DeviceId = GetDeviceId(this.UserName);[/size]
[size=14px]            string result = this.request.RequestCode("https://app.moutai519.com.cn/xhr/front/user/register/login", null, string_);[/size]
[size=14px]            var jObject = JObject.Parse(result);[/size]
[size=14px]            if (jObject.GetValue("code").Value<int>() != 2000)[/size]
[size=14px]            {[/size]
[size=14px]                throw new InvalidOperationException("登录失败:" + result);[/size]
[size=14px]            }[/size]
[size=14px]            return result;[/size]
[size=14px]        }[/size]
[size=14px] [/size]
[size=14px]        public RResponse Reservation(UserEntity user, string itemId, string shopId)[/size]
[size=14px]        {[/size]
[size=14px]            var info = new Dictionary<string, object>[/size]
[size=14px]            {[/size]
[size=14px]                { "itemId", itemId },[/size]
[size=14px]                { "count", 1 }[/size]
[size=14px]            };[/size]
[size=14px]            var values = new Dictionary<string, object>[/size]
[size=14px]            {[/size]
[size=14px]                { "itemInfoList", new List<Dictionary<string, object>>() { info } },[/size]
[size=14px]                { "sessionId", this.request.Session},[/size]
[size=14px]                {"shopId",shopId},[/size]
[size=14px]                {"userId",user.UserId + ""}[/size]
[size=14px]            };[/size]
[size=14px] [/size]
[size=14px]            Hashtable headers = new Hashtable();[/size]
[size=14px]            headers.Add("MT-Token", user.Token);[/size]
[size=14px]            headers.Add("userId", user.UserId.ToString());[/size]
[size=14px]            values.Add("actParam", EncryptAES_CBC(JsonConvert.SerializeObject(values).Replace("\\\"", "\"")));[/size]
[size=14px]            var requestBody = JsonConvert.SerializeObject(values);[/size]
[size=14px]            System.Console.WriteLine(requestBody);[/size]
[size=14px]            // string string_ = param.ToString();[/size]
[size=14px]            this.request.DeviceId = GetDeviceId(user.Mobile);[/size]
[size=14px]            string result = this.request.RequestCode("https://app.moutai519.com.cn/xhr/front/mall/reservation/add", headers, requestBody);[/size]
[size=14px]            System.Console.WriteLine(result);[/size]
[size=14px]            var jObject = JObject.Parse(result);[/size]
[size=14px]            if (jObject.GetValue("code").Value<int>() == 2000)[/size]
[size=14px]            {[/size]
[size=14px]                var dataJObject = jObject["data"];[/size]
[size=14px] [/size]
[size=14px]                return new RResponse()[/size]
[size=14px]                {[/size]
[size=14px]                    Code = jObject.GetValue("code").Value<int>(),[/size]
[size=14px]                    Message = dataJObject["successDesc"].Value<string>()[/size]
[size=14px]                };[/size]
[size=14px] [/size]
[size=14px]            }[/size]
[size=14px]            else {[/size]
[size=14px]                return new RResponse()[/size]
[size=14px]                {[/size]
[size=14px]                    Code = jObject.GetValue("code").Value<int>(),[/size]
[size=14px]                    Message = jObject.GetValue("message").Value<string>()[/size]
[size=14px]                };[/size]
[size=14px]            }[/size]
[size=14px]        }

免费评分

参与人数 16吾爱币 +13 热心值 +13 收起 理由
darwin7023 + 1 + 1 我很赞同!
PayB + 1 我很赞同!
00oo + 1 新人,没积分下载
涛少 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
datouvb + 1 + 1 deviceId填什么?
6662680 + 1 我很赞同!
ys002 + 1 我很赞同!
pyxma214 + 1 + 1 谢谢@Thanks!
suns2008 + 1 + 1 谢谢@Thanks!
smoky + 1 谢谢@Thanks!
pdc9911 + 1 + 1 谢谢@Thanks!
awfi9000 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kpking + 1 + 1 谢谢@Thanks!
阿呆哥 + 1 我很赞同!
囧小九 + 1 + 1 我很赞同!
紫色情愫 + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

NEmo11 发表于 2024-5-28 17:11
2024-05-28 17:10:41.4880 [DEBUG] ConsoleApp3.Program.Main(:0) - 成功导入配置的其他用户信息!
2024-05-28 17:10:41.4880 [DEBUG] ConsoleApp3.Program.Main(:0) - ############################################
2024-05-28 17:10:41.4880 [DEBUG] ConsoleApp3.Program.Main(:0) - 开始预约................
预约请求返回的结果:      {"message":"[ianus-token-auth] device id inconsistency","code":4011}

2024-05-28 17:10:41.8612 [DEBUG] ConsoleApp3.OperationManager.Reserve(:0) - Reserve[Mobile == 17795036213, code == 4011, message == [ianus-token-auth] device id inconsistency].
预约请求返回的结果:      {"message":"[ianus-token-auth] device id inconsistency","code":4011}

2024-05-28 17:10:42.1398 [DEBUG] ConsoleApp3.OperationManager.Reserve(:0) - Reserve[Mobile == 17795036213, code == 4011, message == [ianus-token-auth] device id inconsistency].
2024-05-28 17:10:42.1398 [DEBUG] ConsoleApp3.Program.Main(:0) - 预约完成!
2024-05-28 17:10:42.1398 [DEBUG] ConsoleApp3.Program.Main(:0) - ############################################
2024-05-28 17:10:42.1398 [DEBUG] ConsoleApp3.Program.Main(:0) - 开始获取预约后的游戏积分!
{"message":"[ianus-token-auth] device id inconsistency","code":4011}

2024-05-28 17:10:42.4955 [DEBUG] ConsoleApp3.OperationManager.GetUserEnergyAward(:0) - {"message":"[ianus-token-auth] device id inconsistency","code":4011}

2024-05-28 17:10:42.4955 [DEBUG] ConsoleApp3.Program.Main(:0) - 获取预约后的游戏积分成功!
2024-05-28 17:10:42.4955 [DEBUG] ConsoleApp3.Program.Main(:0) - ############################################
2024-05-28 17:10:42.4955 [DEBUG] ConsoleApp3.Program.Main(:0) - ############################################
2024-05-28 17:10:42.4955 [DEBUG] ConsoleApp3.Program.Main(:0) - 开始获取小茅运!
2024-05-28 17:10:42.5834 [DEBUG] ConsoleApp3.OperationManager.GetUserRewward(:0) - [ 17795036213 ] 获取7天小茅运奖励,返回数据是:
2024-05-28 17:10:42.6692 [DEBUG] ConsoleApp3.OperationManager.GetUserRewward(:0) - [ 17795036213 ] 获取小茅运奖励,返回 数据是:
2024-05-28 17:10:42.6692 [DEBUG] ConsoleApp3.Program.Main(:0) - 获取小茅运成功!
2024-05-28 17:10:42.6692 [DEBUG] ConsoleApp3.Program.Main(:0) - ############################################


搞了好久 还是不行,设备id验证不通过
tianhehe 发表于 2024-5-10 00:39
hyh920 发表于 2024-5-10 02:16
moneyjin 发表于 2024-5-10 07:36
本帖最后由 moneyjin 于 2024-5-10 07:48 编辑

谢谢分享!是用来预约那个撸羊毛的茅台酒平台吗,比如贵旅优品、空港乐购、乐旅商城等一些平台吗
查了下,是用来预约茅台官方APP  i茅台  的
ZhjhJZ 发表于 2024-5-10 08:09
抢茅台是个技术活儿
potato614 发表于 2024-5-10 08:41
怎么查经纬度以及茅台店ID啊
mygaryge 发表于 2024-5-10 08:41
感谢分享,但现在茅台已经赚不到钱了啊
object86 发表于 2024-5-10 08:47
不错,眼熟的C#
jubaicc 发表于 2024-5-10 08:50
感谢分享,准备看看京东和天猫的
cpgqy 发表于 2024-5-10 08:53
jubaicc 发表于 2024-5-10 08:50
感谢分享,准备看看京东和天猫的

我曾经在天猫中过 原价转给朋友了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 03:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表