|
@ -11,8 +11,6 @@ import ( |
|
|
"github.com/ztino/jd_seckill/common" |
|
|
"github.com/ztino/jd_seckill/common" |
|
|
"github.com/ztino/jd_seckill/jd_seckill" |
|
|
"github.com/ztino/jd_seckill/jd_seckill" |
|
|
"log" |
|
|
"log" |
|
|
"net/http" |
|
|
|
|
|
"net/http/httptest" |
|
|
|
|
|
"net/url" |
|
|
"net/url" |
|
|
"time" |
|
|
"time" |
|
|
) |
|
|
) |
|
@ -34,16 +32,20 @@ func startJdTdudfp(cmd *cobra.Command, args []string) { |
|
|
log.Println("自动获取eid和fp失败,请重新登录") |
|
|
log.Println("自动获取eid和fp失败,请重新登录") |
|
|
}else { |
|
|
}else { |
|
|
log.Println("开始自动获取eid和fp,如遇卡住请结束进程,重新启动") |
|
|
log.Println("开始自动获取eid和fp,如遇卡住请结束进程,重新启动") |
|
|
ctx := context.Background() |
|
|
|
|
|
options := []chromedp.ExecAllocatorOption{ |
|
|
options := []chromedp.ExecAllocatorOption{ |
|
|
chromedp.Flag("headless", false), |
|
|
chromedp.Flag("headless", false), |
|
|
chromedp.Flag("hide-scrollbars", false), |
|
|
//chromedp.Flag("blink-settings", "imagesEnabled=false"),
|
|
|
chromedp.Flag("mute-audio", false), |
|
|
chromedp.Flag("start-maximized", true), |
|
|
|
|
|
chromedp.Flag("no-sandbox",true), |
|
|
|
|
|
chromedp.Flag("disable-setuid-sandbox",true), |
|
|
|
|
|
chromedp.Flag("no-default-browser-check",true), |
|
|
|
|
|
chromedp.Flag("disable-plugins",true), |
|
|
|
|
|
chromedp.WindowSize(1920,1080), |
|
|
chromedp.UserAgent(common.Config.MustValue("config","default_user_agent","")), |
|
|
chromedp.UserAgent(common.Config.MustValue("config","default_user_agent","")), |
|
|
} |
|
|
} |
|
|
options = append(chromedp.DefaultExecAllocatorOptions[:], options...) |
|
|
options = append(chromedp.DefaultExecAllocatorOptions[:], options...) |
|
|
|
|
|
|
|
|
c, cc := chromedp.NewExecAllocator(ctx, options...) |
|
|
c, cc := chromedp.NewExecAllocator(context.Background(), options...) |
|
|
defer cc() |
|
|
defer cc() |
|
|
|
|
|
|
|
|
ctx, cancel := chromedp.NewContext(c) |
|
|
ctx, cancel := chromedp.NewContext(c) |
|
@ -52,7 +54,7 @@ func startJdTdudfp(cmd *cobra.Command, args []string) { |
|
|
|
|
|
|
|
|
u, _ := url.Parse("http://jd.com") |
|
|
u, _ := url.Parse("http://jd.com") |
|
|
cookies := common.CookieJar.Cookies(u) |
|
|
cookies := common.CookieJar.Cookies(u) |
|
|
err := chromedp.Run(ctx, |
|
|
err = chromedp.Run(ctx, |
|
|
chromedp.Tasks{ |
|
|
chromedp.Tasks{ |
|
|
chromedp.ActionFunc(func(ctx context.Context) error { |
|
|
chromedp.ActionFunc(func(ctx context.Context) error { |
|
|
expr := cdp.TimeSinceEpoch(time.Now().Add(180 * 24 * time.Hour)) |
|
|
expr := cdp.TimeSinceEpoch(time.Now().Add(180 * 24 * time.Hour)) |
|
@ -66,42 +68,46 @@ func startJdTdudfp(cmd *cobra.Command, args []string) { |
|
|
return nil |
|
|
return nil |
|
|
}), |
|
|
}), |
|
|
chromedp.Navigate("https://jd.com"), |
|
|
chromedp.Navigate("https://jd.com"), |
|
|
|
|
|
chromedp.Sleep(2*time.Second), |
|
|
chromedp.Click(".cate_menu_lk"), |
|
|
chromedp.Click(".cate_menu_lk"), |
|
|
|
|
|
chromedp.Sleep(2*time.Second), |
|
|
}, |
|
|
}, |
|
|
) |
|
|
) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Fatal(err) |
|
|
log.Fatal(err) |
|
|
} |
|
|
} |
|
|
newCtx, cancel := chromedp.NewContext(ctx, chromedp.WithTargetID(<-ch)) |
|
|
|
|
|
ch = addNewTabListener(newCtx) |
|
|
newCtx, cancel2 := chromedp.NewContext(ctx, chromedp.WithTargetID(<-ch)) |
|
|
defer cancel() |
|
|
ch2 := addNewTabListener(newCtx) |
|
|
|
|
|
defer cancel2() |
|
|
|
|
|
|
|
|
err = chromedp.Run(newCtx, |
|
|
err = chromedp.Run(newCtx, |
|
|
chromedp.Click(`.goods_item_link`), |
|
|
chromedp.Click(".goods_item_link"), |
|
|
|
|
|
chromedp.Sleep(4*time.Second), |
|
|
) |
|
|
) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Fatal(err) |
|
|
log.Fatal(err) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
newCtx, cancel = chromedp.NewContext(ctx, chromedp.WithTargetID(<-ch)) |
|
|
newCtx2, cancel3 := chromedp.NewContext(ctx, chromedp.WithTargetID(<-ch2)) |
|
|
defer cancel() |
|
|
defer cancel3() |
|
|
|
|
|
|
|
|
var res []byte |
|
|
var res []byte |
|
|
err = chromedp.Run(newCtx, |
|
|
err = chromedp.Run(newCtx2, |
|
|
chromedp.Click(`#InitCartUrl`), |
|
|
chromedp.Click("#InitCartUrl"), |
|
|
chromedp.WaitVisible(".btn-addtocart"), |
|
|
chromedp.Sleep(2*time.Second), |
|
|
chromedp.Click(".btn-addtocart"), |
|
|
chromedp.Click(".btn-addtocart"), |
|
|
chromedp.WaitVisible(".common-submit-btn"), |
|
|
chromedp.Sleep(2*time.Second), |
|
|
chromedp.Click(".common-submit-btn"), |
|
|
chromedp.Click(".common-submit-btn"), |
|
|
chromedp.WaitVisible("#sumPayPriceId"), |
|
|
|
|
|
chromedp.Sleep(3*time.Second), |
|
|
chromedp.Sleep(3*time.Second), |
|
|
chromedp.Evaluate("_JdTdudfp", &res), |
|
|
chromedp.Evaluate("_JdTdudfp", &res), |
|
|
) |
|
|
) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Fatal(err) |
|
|
log.Fatal(err) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
value:=string(res) |
|
|
value:=string(res) |
|
|
if !gjson.Valid(value) { |
|
|
if !gjson.Valid(value) || gjson.Get(value,"eid").String()=="" || gjson.Get(value,"fp").String()=="" { |
|
|
log.Println("获取失败,请重新尝试,返回信息:"+value) |
|
|
log.Println("获取失败,请重新尝试,返回信息:"+value) |
|
|
}else{ |
|
|
}else{ |
|
|
log.Println("获取成功,请手动填入配置文件") |
|
|
log.Println("获取成功,请手动填入配置文件") |
|
@ -112,11 +118,10 @@ func startJdTdudfp(cmd *cobra.Command, args []string) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func addNewTabListener(ctx context.Context) <-chan target.ID { |
|
|
func addNewTabListener(ctx context.Context) <-chan target.ID { |
|
|
mux := http.NewServeMux() |
|
|
/* mux := http.NewServeMux() |
|
|
ts := httptest.NewServer(mux) |
|
|
ts := httptest.NewServer(mux) |
|
|
defer ts.Close() |
|
|
defer ts.Close()*/ |
|
|
|
|
|
|
|
|
return chromedp.WaitNewTarget(ctx, func(info *target.Info) bool { |
|
|
return chromedp.WaitNewTarget(ctx, func(info *target.Info) bool { |
|
|
return info.URL != "" |
|
|
return true |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |