Skip to content

Commit f13687b

Browse files
author
choviwu
committed
抢购订单url格式化
1 parent f695a87 commit f13687b

File tree

1 file changed

+93
-94
lines changed

1 file changed

+93
-94
lines changed

secKill/jdSecKill.go

+93-94
Original file line numberDiff line numberDiff line change
@@ -28,42 +28,42 @@ import (
2828
var ErrEmptyData = errors.New("空数据")
2929

3030
type jdSecKill struct {
31-
ctx context.Context
32-
cancel context.CancelFunc
33-
bCtx context.Context
34-
bWorksCtx []context.Context
35-
isLogin bool
36-
isClose bool
37-
mu sync.Mutex
38-
userAgent string
39-
UserInfo gjson.Result
40-
SkuId string
41-
SecKillUrl string
42-
SecKillNum int
31+
ctx context.Context
32+
cancel context.CancelFunc
33+
bCtx context.Context
34+
bWorksCtx []context.Context
35+
isLogin bool
36+
isClose bool
37+
mu sync.Mutex
38+
userAgent string
39+
UserInfo gjson.Result
40+
SkuId string
41+
SecKillUrl string
42+
SecKillNum int
4343
SecKillInfo gjson.Result
44-
eid string
45-
fp string
46-
Works int
47-
IsOkChan chan struct{}
48-
IsOk bool
49-
StartTime time.Time
50-
DiffTime int64
44+
eid string
45+
fp string
46+
Works int
47+
IsOkChan chan struct{}
48+
IsOk bool
49+
StartTime time.Time
50+
DiffTime int64
5151
}
5252

5353
func NewJdSecKill(execPath string, skuId string, num, works int) *jdSecKill {
5454
if works < 0 {
5555
works = 1
5656
}
57-
jsk := &jdSecKill{
58-
ctx: nil,
59-
isLogin: false,
60-
isClose: false,
61-
userAgent:chromedpEngine.GetRandUserAgent(),
62-
SkuId:skuId,
63-
SecKillNum:num,
64-
Works:works,
65-
IsOk:false,
66-
IsOkChan:make(chan struct{}, 1),
57+
jsk := &jdSecKill{
58+
ctx: nil,
59+
isLogin: false,
60+
isClose: false,
61+
userAgent: chromedpEngine.GetRandUserAgent(),
62+
SkuId: skuId,
63+
SecKillNum: num,
64+
Works: works,
65+
IsOk: false,
66+
IsOkChan: make(chan struct{}, 1),
6767
}
6868
jsk.ctx, jsk.cancel = chromedpEngine.NewExecCtx(chromedp.ExecPath(execPath), chromedp.UserAgent(jsk.userAgent))
6969
return jsk
@@ -118,7 +118,7 @@ func (jsk *jdSecKill) GetReq(reqUrl string, params map[string]string, referer st
118118
defer resp.Body.Close()
119119
b, _ := ioutil.ReadAll(resp.Body)
120120
logs.PrintlnSuccess("Get请求接口:", req.URL)
121-
// logs.PrintlnSuccess(string(b))
121+
// logs.PrintlnSuccess(string(b))
122122
logs.PrintlnInfo("=======================")
123123
r := FormatJdResponse(b, req.URL.String(), false)
124124
if r.Raw == "null" || r.Raw == "" {
@@ -223,13 +223,13 @@ func (jsk *jdSecKill) Run() error {
223223
logs.PrintlnInfo("等待登陆......")
224224
for {
225225
select {
226-
case <-jsk.ctx.Done():
227-
logs.PrintErr("浏览器被关闭,退出进程")
228-
return nil
229-
case <-jsk.bCtx.Done():
230-
logs.PrintErr("浏览器被关闭,退出进程")
231-
return nil
232-
default:
226+
case <-jsk.ctx.Done():
227+
logs.PrintErr("浏览器被关闭,退出进程")
228+
return nil
229+
case <-jsk.bCtx.Done():
230+
logs.PrintErr("浏览器被关闭,退出进程")
231+
return nil
232+
default:
233233
}
234234
if jsk.isLogin {
235235
logs.PrintlnSuccess(jsk.UserInfo.Get("realName").String() + ", 登陆成功........")
@@ -254,7 +254,7 @@ func (jsk *jdSecKill) Run() error {
254254
logs.PrintErr("抢购连接访问错误,正在重试:", err)
255255
}
256256
//_, _, _, _ = page.Navigate(jsk.SecKillUrl).WithReferrer("https://item.jd.com/"+jsk.SkuId+".html").Do(ctx2)
257-
SecKillRE:
257+
SecKillRE:
258258
//请求抢购连接,提交订单
259259
err := jsk.ReqSubmitSecKillOrder(ctx2)
260260
if err != nil {
@@ -265,11 +265,11 @@ func (jsk *jdSecKill) Run() error {
265265
}(v)
266266
}
267267
select {
268-
case <-jsk.IsOkChan:
269-
logs.PrintlnInfo("抢购成功。。。10s后关闭进程...")
270-
_ = chromedp.Sleep(10 * time.Second).Do(ctx)
271-
case <-jsk.ctx.Done():
272-
case <-jsk.bCtx.Done():
268+
case <-jsk.IsOkChan:
269+
logs.PrintlnInfo("抢购成功。。。10s后关闭进程...")
270+
_ = chromedp.Sleep(10 * time.Second).Do(ctx)
271+
case <-jsk.ctx.Done():
272+
case <-jsk.bCtx.Done():
273273
}
274274
return nil
275275
}),
@@ -278,7 +278,7 @@ func (jsk *jdSecKill) Run() error {
278278

279279
func (jsk *jdSecKill) WaitStart() chromedp.ActionFunc {
280280
return func(ctx context.Context) error {
281-
u := "https://item.jd.com/"+jsk.SkuId+".html"
281+
u := "https://item.jd.com/" + jsk.SkuId + ".html"
282282
for i := 0; i < jsk.Works; i++ {
283283
go func() {
284284
tid, err := target.CreateTarget(u).Do(ctx)
@@ -298,7 +298,7 @@ func (jsk *jdSecKill) WaitStart() chromedp.ActionFunc {
298298
}
299299
_ = chromedp.Navigate(u).Do(ctx)
300300
st := jsk.StartTime.UnixNano() / 1e6
301-
logs.PrintlnInfo("等待时间到达"+jsk.StartTime.Format(global.DateTimeFormatStr)+"...... 请勿关闭浏览器")
301+
logs.PrintlnInfo("等待时间到达" + jsk.StartTime.Format(global.DateTimeFormatStr) + "...... 请勿关闭浏览器")
302302
for {
303303
select {
304304
case <-jsk.ctx.Done():
@@ -309,7 +309,7 @@ func (jsk *jdSecKill) WaitStart() chromedp.ActionFunc {
309309
return nil
310310
default:
311311
}
312-
if global.UnixMilli() - jsk.DiffTime >= st {
312+
if global.UnixMilli()-jsk.DiffTime >= st {
313313
logs.PrintlnInfo("时间到达。。。。开始执行")
314314
break
315315
}
@@ -326,7 +326,7 @@ func (jsk *jdSecKill) GetEidAndFp() chromedp.ActionFunc {
326326
logs.PrintlnInfo("eid : ", jsk.eid, "fp : ", jsk.fp)
327327
return nil
328328
}
329-
RE:
329+
RE:
330330
logs.PrintlnInfo("正在获取eid和fp参数....")
331331
_ = chromedp.Navigate("https://search.jd.com/Search?keyword=衣服").Do(ctx)
332332
logs.PrintlnInfo("等待页面更新完成....")
@@ -338,14 +338,14 @@ func (jsk *jdSecKill) GetEidAndFp() chromedp.ActionFunc {
338338
}
339339
n := itemNodes[rand.Intn(len(itemNodes))]
340340
_ = dom.ScrollIntoViewIfNeeded().WithNodeID(n.NodeID).Do(ctx)
341-
_, _, _, _ = page.Navigate("https://item.jd.com/"+n.AttributeValue("data-sku")+".html").Do(ctx)
341+
_, _, _, _ = page.Navigate("https://item.jd.com/" + n.AttributeValue("data-sku") + ".html").Do(ctx)
342342

343343
logs.PrintlnInfo("等待商品详情页更新完成....")
344344
_ = chromedp.WaitVisible("#InitCartUrl").Do(ctx)
345-
_ = chromedp.Sleep(1 * time.Second).Do(ctx);
345+
_ = chromedp.Sleep(1 * time.Second).Do(ctx)
346346
_ = chromedp.Click("#InitCartUrl").Do(ctx)
347347
_ = chromedp.WaitVisible("#GotoShoppingCart").Do(ctx)
348-
_ = chromedp.Sleep(1 * time.Second).Do(ctx);
348+
_ = chromedp.Sleep(1 * time.Second).Do(ctx)
349349
_ = chromedp.Click("#GotoShoppingCart").Do(ctx)
350350
//_ = chromedp.Navigate("https://cart.jd.com/cart_index/").Do(ctx)
351351
_ = chromedp.WaitVisible("#cart-body").Do(ctx)
@@ -373,7 +373,7 @@ func (jsk *jdSecKill) GetEidAndFp() chromedp.ActionFunc {
373373
logs.PrintlnWarning("获取参数失败,等待重试。。。 重试过程过久可手动刷新浏览器")
374374
goto RE
375375
}
376-
logs.PrintlnInfo("参数获取成功:eid【"+jsk.eid+"】, fp【"+jsk.fp+"】")
376+
logs.PrintlnInfo("参数获取成功:eid【" + jsk.eid + "】, fp【" + jsk.fp + "】")
377377

378378
return nil
379379
}
@@ -428,7 +428,7 @@ func (jsk *jdSecKill) ReqSubmitSecKillOrder(ctx context.Context) error {
428428
logs.PrintlnInfo("提交抢购订单.............")
429429

430430
submitCount := 1
431-
RE:
431+
RE:
432432
r, err := jsk.PostReq("https://marathon.jd.com/seckillnew/orderService/pc/submitOrder.action?skuId="+jsk.SkuId+"", orderData, skUrl, ctx, false)
433433
if err != nil {
434434
if submitCount < 10 {
@@ -475,40 +475,39 @@ func (jsk *jdSecKill) GetOrderReqData() url.Values {
475475
}
476476
invoiceInfo := jsk.SecKillInfo.Get("invoiceInfo")
477477
r := url.Values{
478-
"skuId":[]string{jsk.SkuId},
479-
"num":[]string{strconv.Itoa(jsk.SecKillNum)},
480-
"addressId":[]string{defaultAddress.Get("id").String()},
481-
"yuShou":[]string{"true"},
482-
"isModifyAddress":[]string{"false"},
483-
"name":[]string{defaultAddress.Get("name").String()},
484-
"provinceId":[]string{defaultAddress.Get("provinceId").String()},
485-
"cityId":[]string{defaultAddress.Get("cityId").String()},
486-
"countyId":[]string{defaultAddress.Get("countyId").String()},
487-
"townId":[]string{defaultAddress.Get("townId").String()},
488-
"addressDetail":[]string{defaultAddress.Get("addressDetail").String()},
489-
"mobile":[]string{defaultAddress.Get("mobile").String()},
490-
"mobileKey":[]string{defaultAddress.Get("mobileKey").String()},
491-
"email":[]string{defaultAddress.Get("email").String()},
492-
"postCode":[]string{""},
493-
"invoiceTitle":[]string{""},
494-
"invoiceCompanyName":[]string{""},
495-
"invoiceContent":[]string{},
496-
"invoiceTaxpayerNO":[]string{""},
497-
"invoiceEmail":[]string{""},
498-
"invoicePhone":[]string{invoiceInfo.Get("invoicePhone").String()},
499-
"invoicePhoneKey":[]string{invoiceInfo.Get("invoicePhoneKey").String()},
500-
"invoice":[]string{"true"},
501-
"password":[]string{""},
502-
"codTimeType":[]string{"3"},
503-
"paymentType":[]string{"4"},
504-
"areaCode":[]string{""},
505-
"overseas":[]string{"0"},
506-
"phone":[]string{""},
507-
"eid":[]string{jsk.eid},
508-
"fp":[]string{jsk.fp},
509-
"token":[]string{jsk.SecKillInfo.Get("token").String()},
510-
"pru":[]string{""},
511-
478+
"skuId": []string{jsk.SkuId},
479+
"num": []string{strconv.Itoa(jsk.SecKillNum)},
480+
"addressId": []string{defaultAddress.Get("id").String()},
481+
"yuShou": []string{"true"},
482+
"isModifyAddress": []string{"false"},
483+
"name": []string{defaultAddress.Get("name").String()},
484+
"provinceId": []string{defaultAddress.Get("provinceId").String()},
485+
"cityId": []string{defaultAddress.Get("cityId").String()},
486+
"countyId": []string{defaultAddress.Get("countyId").String()},
487+
"townId": []string{defaultAddress.Get("townId").String()},
488+
"addressDetail": []string{defaultAddress.Get("addressDetail").String()},
489+
"mobile": []string{defaultAddress.Get("mobile").String()},
490+
"mobileKey": []string{defaultAddress.Get("mobileKey").String()},
491+
"email": []string{defaultAddress.Get("email").String()},
492+
"postCode": []string{""},
493+
"invoiceTitle": []string{""},
494+
"invoiceCompanyName": []string{""},
495+
"invoiceContent": []string{},
496+
"invoiceTaxpayerNO": []string{""},
497+
"invoiceEmail": []string{""},
498+
"invoicePhone": []string{invoiceInfo.Get("invoicePhone").String()},
499+
"invoicePhoneKey": []string{invoiceInfo.Get("invoicePhoneKey").String()},
500+
"invoice": []string{"true"},
501+
"password": []string{""},
502+
"codTimeType": []string{"3"},
503+
"paymentType": []string{"4"},
504+
"areaCode": []string{""},
505+
"overseas": []string{"0"},
506+
"phone": []string{""},
507+
"eid": []string{jsk.eid},
508+
"fp": []string{jsk.fp},
509+
"token": []string{jsk.SecKillInfo.Get("token").String()},
510+
"pru": []string{""},
512511
}
513512

514513
if invoiceInfo.Raw == "" {
@@ -535,10 +534,10 @@ func (jsk *jdSecKill) GetOrderReqData() url.Values {
535534

536535
func (jsk *jdSecKill) GetSecKillInitInfo(ctx context.Context) error {
537536
r, err := jsk.PostReq("https://marathon.jd.com/seckillnew/orderService/pc/init.action", url.Values{
538-
"sku":[]string{jsk.SkuId},
539-
"num":[]string{strconv.Itoa(jsk.SecKillNum)},
540-
"isModifyAddress":[]string{"false"},
541-
}, fmt.Sprintf("https://marathon.jd.com/seckill/seckill.action?=skuId=100012043978&num=2&rid=%d", time.Now().Unix()), ctx, false)
537+
"sku": []string{jsk.SkuId},
538+
"num": []string{strconv.Itoa(jsk.SecKillNum)},
539+
"isModifyAddress": []string{"false"},
540+
}, fmt.Sprintf("https://marathon.jd.com/seckill/seckill.action?=skuId=%s&num=%d&rid=%d", jsk.SkuId, jsk.SecKillNum, time.Now().Unix()), ctx, false)
542541
if err != nil {
543542
return err
544543
}
@@ -552,10 +551,10 @@ func (jsk *jdSecKill) GetSecKillUrl() string {
552551
req.Header.Add("User-Agent", jsk.userAgent)
553552
req.Header.Add("Referer", "https://item.jd.com/"+jsk.SkuId+".html")
554553
r, _ := jsk.GetReq("https://itemko.jd.com/itemShowBtn", map[string]string{
555-
"callback":"jQuery" + strconv.FormatInt(global.GenerateRangeNum(1000000, 9999999), 10),
556-
"skuId":jsk.SkuId,
557-
"from":"pc",
558-
"_": strconv.FormatInt(time.Now().Unix() * 1000, 10),
554+
"callback": "jQuery" + strconv.FormatInt(global.GenerateRangeNum(1000000, 9999999), 10),
555+
"skuId": jsk.SkuId,
556+
"from": "pc",
557+
"_": strconv.FormatInt(time.Now().Unix()*1000, 10),
559558
}, "https://item.jd.com/"+jsk.SkuId+".html", nil, false)
560559
return r.Get("url").String()
561560
}

0 commit comments

Comments
 (0)