package jdslogin // RefreshQRCode Creat By 2022/04/18 // RefreshQRCode Author By Hang xu // RefreshQRCode 用于爬取京东的二维码链接 并持久化进入数据库中 //func RefreshQRCode() (retval string, err error) { // baseapi.SugarLogger.Debug("BEGIN JD SHOP QRCODE SPIDER---------------------------------------------------") // const ( // seleniumPath = `/usr/bin/chromedriver` // port = 9515 // ) // opts := []selenium.ServiceOption{} // // selenium.SetDebug(true) // // service, err := selenium.NewChromeDriverService(seleniumPath, port, opts...) // if nil != err { // fmt.Println("start a chromedriver service falid", err.Error()) // return // } // ////server关闭之后,chrome窗口也会关闭 // defer service.Stop() // //链接本地的浏览器 chrome // caps := selenium.Capabilities{ // //"browserName": "/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev", // "browserName": "/opt/google/chrome", // } // //禁止图片加载,加快渲染速度 // imagCaps := map[string]interface{}{ // "profile.managed_default_content_settings.images": 2, // } // chromeCaps := chrome.Capabilities{ // Prefs: imagCaps, // Path: "/opt/google/chrome", // Args: []string{ // //静默执行请求 // "--headless", // 设置Chrome无头模式,在linux下运行,需要设置这个参数,否则会报错 // "--no-sandbox", // "--user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36", // 模拟user-agent,防反爬 // "--Host=porder.shop.jd.com", // "--Connection=keep-alive", // }, // } // //以上是设置浏览器参数 // caps.AddChrome(chromeCaps) // // url := "https://porder.shop.jd.com/order/orderlist/allOrders" // w_b1, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%d/wd/hub", port)) // if err != nil { // fmt.Println("connect to the webDriver faild", err.Error()) // return // } // // err = w_b1.Get(url) // pageSource, err := w_b1.PageSource() // baseapi.SugarLogger.Debug("pageSource", pageSource) // qr, err := w_b1.FindElement("id", "js-login-qrcode") // qrStr, err := qr.GetAttribute("src") // baseapi.SugarLogger.Debug("qrStr:", qrStr) //当前qrcode sample:https://passport.shop.jd.com/login/json/qrcode_show.action?_timeStr=165026591404449b823cc58684d948d0e0ca8351adf64 // // 进行存库操作 // // save to database 存入 new_config表中 // db := dao.GetDB() // txDB, _ := dao.Begin(db) // defer func() { // if r := recover(); r != nil { // dao.Rollback(db, txDB) // panic(r) // } // }() // configList, err := dao.QueryConfigs(db, "jdsQRcode", "Cookie", "") // if err != nil { // dao.Rollback(db, txDB) // return "", err // } // if _, err = dao.UpdateEntityLogically(db, configList[0], map[string]interface{}{ // "Value": qrStr, // }, "", nil); err != nil { // dao.Rollback(db, txDB) // return "", err // } // baseapi.SugarLogger.Debug("THE JD SHOP QRCODE SPIDER THE END---------------------------------------------") // return "", nil //}