Browse Source

自动获取eid和fp修改

main
ztino 4 years ago
parent
commit
be17fdeb51
  1. 51
      cmd/jdTdudfp.go

51
cmd/jdTdudfp.go

@ -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
}) })
} }
Loading…
Cancel
Save