Browse Source

add new func with rod page

Signed-off-by: allan716 <[email protected]>
allan716 3 years ago
parent
commit
af057a71cb
1 changed files with 66 additions and 0 deletions
  1. 66 0
      pkg/rod_helper/rod_base.go

+ 66 - 0
pkg/rod_helper/rod_base.go

@@ -307,6 +307,72 @@ func NewPageNavigateWithProxy(browser *rod.Browser, proxyUrl string, desURL stri
 	return page, nil
 }
 
+func PageNavigate(page *rod.Page, desURL string, timeOut time.Duration) (*rod.Page, error) {
+
+	err := page.SetUserAgent(&proto.NetworkSetUserAgentOverride{
+		UserAgent: random_useragent.RandomUserAgent(true),
+	})
+	if err != nil {
+		if page != nil {
+			page.Close()
+		}
+		return nil, err
+	}
+	page = page.Timeout(timeOut)
+	err = rod.Try(func() {
+		page.MustNavigate(desURL).MustWaitLoad()
+	})
+	if err != nil {
+		if page != nil {
+			page.Close()
+		}
+		return nil, err
+	}
+	return page, err
+}
+
+func PageNavigateWithProxy(page *rod.Page, proxyUrl string, desURL string, timeOut time.Duration) (*rod.Page, error) {
+
+	router := page.HijackRequests()
+	defer router.Stop()
+
+	router.MustAdd("*", func(ctx *rod.Hijack) {
+		px, _ := url.Parse(proxyUrl)
+		err := ctx.LoadResponse(&http.Client{
+			Transport: &http.Transport{
+				Proxy:           http.ProxyURL(px),
+				TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+			},
+		}, true)
+		if err != nil {
+			return
+		}
+	})
+	go router.Run()
+
+	err := page.SetUserAgent(&proto.NetworkSetUserAgentOverride{
+		UserAgent: random_useragent.RandomUserAgent(true),
+	})
+	if err != nil {
+		if page != nil {
+			page.Close()
+		}
+		return nil, err
+	}
+	page = page.Timeout(timeOut)
+	err = rod.Try(func() {
+		page.MustNavigate(desURL).MustWaitLoad()
+	})
+	if err != nil {
+		if page != nil {
+			page.Close()
+		}
+		return nil, err
+	}
+
+	return page, nil
+}
+
 func HttpGetFromBrowser(browser *rod.Browser, inputUrl string, tt time.Duration, debugMode ...bool) (string, *rod.Page, error) {
 
 	page, err := NewPageNavigate(browser, inputUrl, tt, 2, debugMode...)