编辑代码

package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
	"sync"
	"time"
)

func main() {
	var wg sync.WaitGroup
	numThreads := 80

	// 设置抢购时间
	targetTime := time.Date(2023, 7, 20, 12, 59, 59, 900, time.UTC)

	// 计算距离目标时间的等待时间
	now := time.Now()
	waitTime := targetTime.Sub(now)

	// 如果等待时间为负数,则已经过了目标时间,不进行抢购
	if waitTime < 0 {
		fmt.Println("过时")
		return
	}

	fmt.Printf("等待 %v 后开始抢购\n", waitTime)
	time.Sleep(waitTime)

	// 使用多线程进行抢购
	for i := 0; i < numThreads; i++ {
		wg.Add(1)
		go func(threadID int) {
			defer wg.Done()
			client := &http.Client{}
			var data = strings.NewReader(`composeId=28`)
			req, err := http.NewRequest("POST", "https://h5.xmykkj.xyz/prod-api/hc/cphcjk", data)
			if err != nil {
			fmt.Println(err)
			}
			req.Header.Set("authority", "h5.xmykkj.xyz")
			req.Header.Set("accept", "*/*")
			req.Header.Set("accept-language", "zh-CN,zh;q=0.9")
			req.Header.Set("authorization", "Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI1OTIxMiIsInN1YiI6IueOieW_l-aBkiIsImlhdCI6MTY4OTc4ODQ1MCwiaXNzIjoiQ1EiLCJleHAiOjE2OTAxMzg5MDgsIm9wZW5JZCI6IjQ1MjEyODIwMDExMDEyMTAxOSIsInN0YXR1cyI6Im5vcm1hbCIsImxvY2tUeXBlSWQiOjAsImxvY2tSZWFzb24iOiIiLCJpcCI6IjEwMC4xMjcuMTI4LjEzNyJ9.92spjioHoPXQ1ACFSV70Nlao6H1GAqBlkPoiB_uGJs7VaV9R750vt7Jpp4KI7tPXqS5ZbxZ0wEm2PiGgyL30Pw")
			req.Header.Set("cache-control", "no-cache")
			req.Header.Set("content-type", "application/x-www-form-urlencoded")
			req.Header.Set("origin", "https://h5.xmykkj.xyz")
			req.Header.Set("pragma", "no-cache")
			req.Header.Set("referer", "https://h5.xmykkj.xyz/")
			req.Header.Set("sec-fetch-dest", "empty")
			req.Header.Set("sec-fetch-mode", "cors")
			req.Header.Set("sec-fetch-site", "same-origin")
			req.Header.Set("user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1")
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println(err)
	}
	defer resp.Body.Close()
	bodyText, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Printf("%s\n", bodyText)
		}(i)
		time.Sleep(time.Millisecond * 200)
	}

	// 等待所有线程完成
	wg.Wait()

	fmt.Println("完成")

    time.Sleep(60 * time.Second)
}