package com.example;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
//private static final CountDownLatch latch = new CountDownLatch(1);
//private static final ExecutorService threadPool = Executors.newFixedThreadPool(3);
public static void main(String[] args) throws Exception {
String url = "https://mkts.chinaums.com";
String userInfo = "3BAF8F6F2A237A9819A8171679320C81BA00BF3D68D2370607B187B1F96E83D910336D47DE4AF1918AC85048A7EE9956DE27E0D03BE230E441CAD6E6E7902100578DB16887CF31C59C36D6F4F6027E6E42F254B1079AEACABC9A9991973B4330480D3BDD836B33B2D6E6F973EF90B54C94457680BCF1C267D6AEA5A4606B6EAD1BA2D7028DA7E58D92A28470EFA17FF1F08849B73EF6A903D8B45C4230F02171800E3E24A345F4DF1C2BEBC6413C92198FF39BF68CA6979F3610FB9909E0C4CC68940C925D30DB1F0ACDDCFFB32F53F979D3F934C0620F19E24D16ECE84748E47D060A743637F23E1BCA1D11FA207B66201E81AA837D7ECD0907F46173A841C2";
//抓包的订单号,抓一个复用就行
String phonePlatSsn = "9cb226f967f848e4893891dffb3b1e54";
String encryptData = "04d8dce452032247baf94f605d9d45e36d292b9cfa98b52fed41906abc49d7d20dce4a5c15cc35d580692025177062278569ef7c817cada4142158268ccfd1157bc80824d4706c5244fe7d487765fc7d7fc4cc5fc892d75c0688b433fd71f1a517ae9d51910f675ea9aeb2690bfd8a4d11457b06d7c3f440d17298e27db74e4e6395d29b2315ddb3fbdf8e47c5e7b9088f849cdd2cdbbab638be1f3108fd139514e3cb10dbfeb0591066dc1107e4c6e3b9072e0413273065999f05e5e64c1bdc51cc133547f9a2d6bf88dec6be3b62e5e3fcab086f2e8a36d57f862a433f7e1a9f669095611098ffc9ae";
//2923fe5dfd054fcab2bc71bf70ffde49
//576c0f7d702440ac8553b125381d2fc6
String userInfo2 = "99ABC0354673C069C84FF7EE6FD98D5C25A2C58EA94ED8FBD19ABA00703E7040E30B0853F536975080389F9D2AACC7DEFA96131B17FE1CF24294A18F496EF16EAA220165332A8553A2E219BB3A8EBAC57F578D17E4774BD4A64A82F8E668FDB0978B8F14C4D311D78D3F7435AA69328B2D1E3EFD462050F65E0E51C71BBC02CA0913CDCBC23C5DE7D31418BFA0A2F99287A70A26555F4E49873AFDA3DB309D2BAE1949AEB96475F674B06F3F177FDDA44A01E1890DA2163DD9A4F73B716E40D545EC1A3C22583C9F0A1DB5166346942C8B65C2B4D2C6D56D495A462D0AF607F2EF16AC167B957C2B47B49DC71254C10EC960F7D5C0CB13D9C5DEC6EBA1C572B3";
//抓包的订单号,抓一个复用就行
String phonePlatSsn2 = "446e4d6d38d74e038d6a6d45f2514245";
String encryptData2 = "04e830b679f8b990c864b93f08f81f14c323071299d6549949a2af4687d33e70539f6ae5233c73725d28ea09869e430d75cc2a6335d5cf766bb2b1efc71c390cad530e13ada752475b3b5a5d2318ac65d48a78978c78d97d655b0aecf3748f470780c0d202303005e397d5257fd4f7195d03cb3d6c8fdfbbf20ce3f389b756ad2ec38f23c895926413f9d984fa5895b1ccbd48afb01fa05e9ff97abd34cf1c5d4046ed667d64ee094d95ef1fe12ec42dbcc577681f389678f50390901ed06a851c19a6623b5c22c41eefe00e";
//设置当天时间9:59分后开抢
LocalDateTime dateTime = LocalDateTime.of(2025, 7, 21, 9, 49, 00);
LocalDateTime endTime = LocalDateTime.of(2025, 7, 21, 10, 2, 0);
Timer timer = new Timer();
//一个任务对应抢一种券
//电器:"/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance"
//WATER_PURIFIER 净水器 DISHWASHER 洗碗机 MICROWAVE_OVEN 微波炉 TV 电视 WASHER 洗衣机 AIRCONDITION1 空调1 AIRCONDITION2 空调2 AIRCONDITION3 空调3
//RANGE_HOOD 吸油烟机
//家装:"/jdhsApi/jdhs/user/remain/chance/unionpay/homeDecoration"
//HOME_DECORATION 家装消费品 N 智能家具消费品
long startTime = System.currentTimeMillis();
StoppableTask waterpurifierTask = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("净水器时间未到");
return;
}
System.out.println("净水器开抢");
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS) // 连接超时(TCP连接+SSL握手)
.readTimeout(30, TimeUnit.SECONDS) // 读取超时(包括SSL握手后的数据传输)
.writeTimeout(30, TimeUnit.SECONDS)
.build();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"WATER_PURIFIER\"}", phonePlatSsn, userInfo);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("净水器请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("净水器抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("净水器抢购结束");
}
};
StoppableTask dishwasherTask = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("洗碗机时间未到");
return;
}
System.out.println("洗碗机开抢");
OkHttpClient client = new OkHttpClient();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"DISHWASHER\"}", phonePlatSsn, userInfo);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("洗碗机请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("洗碗机抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("洗碗机抢购结束");
}
};
StoppableTask microwave_ovenTask = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("微波炉时间未到");
return;
}
System.out.println("微波炉开抢");
OkHttpClient client = new OkHttpClient();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"MICROWAVE_OVEN\"}", phonePlatSsn, userInfo);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("微波炉请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("微波炉抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("微波炉抢购结束");
}
};
StoppableTask home_decorationTask = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("家装消费品时间未到");
return;
}
System.out.println("家装消费品开抢");
OkHttpClient client = new OkHttpClient();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"HOME_DECORATION\"}", phonePlatSsn, userInfo);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/homeDecoration")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("家装消费品请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("家装消费品抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("家装消费品抢购结束");
}
};
StoppableTask AIRCONDITION1Task = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("空调1时间未到");
return;
}
System.out.println("空调1开抢");
OkHttpClient client = new OkHttpClient();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"AIRCONDITION1\"}", phonePlatSsn2, userInfo2);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("空调1请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("空调1抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("空调1抢购结束");
}
};
StoppableTask RANGE_HOODTask = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("吸油烟机时间未到");
return;
}
System.out.println("吸油烟机开抢");
OkHttpClient client = new OkHttpClient();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"RANGE_HOOD\"}", phonePlatSsn2, userInfo2);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("吸油烟机请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("吸油烟机抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("吸油烟机抢购结束");
}
};
StoppableTask AIRCONDITION3Task = new StoppableTask() {
@Override
public void run() {
try {
if (LocalDateTime.now().isBefore(dateTime)) {
System.out.println("空调3时间未到");
return;
}
System.out.println("空调3开抢");
OkHttpClient client = new OkHttpClient();
String requestBody = String.format("{\"platSsn\": \"%s\", \"userInfo\": \"%s\", \"category\": \"HOME_DECORATION\"}", phonePlatSsn2, userInfo2);
//直接用抓包里的信息构造即可
Request request = new Request.Builder()
.url(url + "/jdhsApi/jdhs/user/category/coupon/get/unionpay/householdAppliance")
.post(RequestBody.create(requestBody,MediaType.parse("application/json")))
.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/14185")
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
.addHeader("Host", "mkts.chinaums.com")
.addHeader("Connection", "keep-alive")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
System.out.println("空调3请求异常:" + response);;
}
String body = response.body().string();
//自行在云闪付查看结果
System.out.println("空调3抢购结果:" + body);
}
} catch (Exception e) {
System.err.println("自定义错误消息"); // 或者使用System.out
e.printStackTrace(); // 这会打印到System.err
}
System.out.println("空调3抢购结束");
}
};
long delay = 0; //延迟0毫秒后开始执行
long period = 10; //每10ms执行一次
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//用线程异步执行
Thread thread = new Thread(waterpurifierTask);
Thread thread1 = new Thread(dishwasherTask);
Thread thread2 = new Thread(microwave_ovenTask);
Thread thread3 = new Thread(home_decorationTask);
Thread thread4 = new Thread(AIRCONDITION1Task);
Thread thread5 = new Thread(RANGE_HOODTask);
Thread thread6 = new Thread(AIRCONDITION3Task);
if (System.currentTimeMillis() - startTime > 20_000) {
waterpurifierTask.stop(); // 停止任务
dishwasherTask.stop();
microwave_ovenTask.stop();
home_decorationTask.stop();
AIRCONDITION1Task.stop();
RANGE_HOODTask.stop();
AIRCONDITION3Task.stop();
this.cancel(); // 取消TimerTask
timer.cancel(); // 停止定时器
return;
}
thread.start();
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
thread6.start();
}
}, delay, period);
Thread.sleep(1000 * 60 * 60 * 60);
}
}
class StoppableTask implements Runnable {
private volatile boolean stopped = false;
public void stop() {
stopped = true;
}
@Override
public void run() {
while (!stopped) {
// 执行任务逻辑
// 添加Thread.sleep()等控制点
}
}
}
要求到达endTime后停止所有任务
最新发布