go-rod / rod

A Chrome DevTools Protocol driver for web automation and scraping.

Home Page:https://go-rod.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Proxy and Hijack

Qedr1 opened this issue · comments

Rod Version: v0.116.0

If I enable Hijack, proxy setting not working, but Hijack working. If I disable HiJack - proxy working well and Hijack working too
In both case I see proxy setting for ps ax

Can u help me? Thx

My Launcher

u := launcher.New().
		Set("enable-features", "ConversionMeasurement,AttributionReportingCrossAppWeb").
		Set("enable-chrome-browser-cloud-management", "").
		Proxy("socks5://127.0.0.1:8888").
		Delete("enable-gpu-rasterization").
		Delete("headless").
                Bin(path)

My Hijack

func pageDisableCache(page *rod.Page) {
	router := page.HijackRequests()
	err := router.Add("", "", func(ctx *rod.Hijack) {
		error := ctx.LoadResponse(http.DefaultClient, true)
		if error != nil {
			log.Println("Hijack LoadResponse err:", error)
			return
		}
		ctx.Response.SetHeader("Cache-Control", "no-cache, no-store, must-revalidate")
		ctx.Response.SetHeader("Pragma", "no-cache")
		ctx.Response.SetHeader("Expires", "0")
	})
	if err != nil {
		log.Println("Hijack response headers err:", err)
		return
	}
	go router.Run()
}

Please fix the format of your markdown:

9 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```go"]
20 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```go"]

generated by check-issue

Problem solved
For this case we need to set htt.Transport

func pageDisableCache(page *rod.Page) {
	router := page.HijackRequests()
	err := router.Add("", "", func(ctx *rod.Hijack) {
		ul, _ := url.Parse("socks5://127.0.0.1:8888")
		proxy := http.ProxyURL(ul)
		transport := &http.Transport{Proxy: proxy}
		error := ctx.LoadResponse(&http.Client{Transport: transport}, true)
		if error != nil {
			log.Println("Hijack LoadResponse err:", error)
			return
		}
		ctx.Response.SetHeader("Cache-Control", "no-cache, no-store, must-revalidate")
		ctx.Response.SetHeader("Pragma", "no-cache")
		ctx.Response.SetHeader("Expires", "0")
	})
	if err != nil {
		log.Println("Hijack response headers err:", err)
		return
	}
	go router.Run()
}

Thx