diff options
-rw-r--r-- | go.mod | 16 | ||||
-rw-r--r-- | go.sum | 20 | ||||
-rw-r--r-- | main.go | 101 |
3 files changed, 137 insertions, 0 deletions
@@ -0,0 +1,16 @@ +module gopkg.teddywing.com/swextreload + +go 1.21.4 + +require github.com/chromedp/chromedp v0.9.3 + +require ( + github.com/chromedp/cdproto v0.0.0-20231011050154-1d073bb38998 // indirect + github.com/chromedp/sysutil v1.0.0 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect + github.com/gobwas/ws v1.3.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + golang.org/x/sys v0.6.0 // indirect +) @@ -0,0 +1,20 @@ +github.com/chromedp/cdproto v0.0.0-20231011050154-1d073bb38998 h1:2zipcnjfFdqAjOQa8otCCh0Lk1M7RBzciy3s80YAKHk= +github.com/chromedp/cdproto v0.0.0-20231011050154-1d073bb38998/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs= +github.com/chromedp/chromedp v0.9.3 h1:Wq58e0dZOdHsxaj9Owmfcf+ibtpYN1N0FWVbaxa/esg= +github.com/chromedp/chromedp v0.9.3/go.mod h1:NipeUkUcuzIdFbBP8eNNvl9upcceOfWzoJn6cRe4ksA= +github.com/chromedp/sysutil v1.0.0 h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic= +github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.3.0 h1:sbeU3Y4Qzlb+MOzIe6mQGf7QR4Hkv6ZD0qhGkBFL2O0= +github.com/gobwas/ws v1.3.0/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -0,0 +1,101 @@ +package main + +import ( + "context" + "log" + "time" + + "github.com/chromedp/cdproto/target" + "github.com/chromedp/chromedp" +) + +func main() { + allocatorContext, cancel := chromedp.NewRemoteAllocator( + context.Background(), + "ws://127.0.0.1:55755/devtools/browser/4536efdf-6ddf-40b6-9a16-258a1935d866", + ) + defer cancel() + + ctx, cancel := chromedp.NewContext(allocatorContext) + defer cancel() + + targets, err := chromedp.Targets(ctx) + if err != nil { + log.Fatalf("error: targets: %v", err) + } + + log.Printf("Targets: %#v", targets) + println() + + var targetID target.ID + for _, target := range targets { + if target.URL == "chrome-extension://imcibeelfmccdpnnlemllnepgbfdbkgo/background.bundle.js" { + log.Printf("Target: %#v", target) + targetID = target.TargetID + break + } + } + + targetCtx, cancel := chromedp.NewContext(ctx, chromedp.WithTargetID(targetID)) + defer cancel() + + var runtimeResp []byte + err = chromedp.Run( + targetCtx, + // chromedp.Evaluate(`chrome.runtime.reload();`, &runtimeResp), + // chromedp.Evaluate(`chrome.tabs.reload();`, &tabsResp), + // chromedp.Evaluate(`chrome.runtime.reload();`, nil), + // chromedp.EvaluateAsDevTools(`chrome.runtime.reload();`, nil), + chromedp.Evaluate(`chrome.runtime.reload();`, nil), + // chromedp.Evaluate(`chrome.tabs.reload();`, nil), + ) + if err != nil { + log.Fatalf("error: run: %v", err) + } + + // var tabsResp []byte + // err = chromedp.Run( + // targetCtx, + // // chromedp.Evaluate(`chrome.tabs.reload();`, &tabsResp), + // // chromedp.Evaluate(`chrome.tabs.reload();`, nil), + // chromedp.EvaluateAsDevTools(`chrome.tabs.reload();`, nil), + // ) + // if err != nil { + // log.Fatalf("error: run tabs: %v", err) + // } + + log.Printf("Runtime: %v", string(runtimeResp)) + // log.Printf("Tabs: %v", string(tabsResp)) + + time.Sleep(200 * time.Millisecond) + + targets, err = chromedp.Targets(ctx) + if err != nil { + log.Fatalf("error: targets2: %v", err) + } + + log.Printf("Targets: %#v", targets) + println() + + for _, target := range targets { + if target.URL == "chrome-extension://imcibeelfmccdpnnlemllnepgbfdbkgo/background.bundle.js" { + log.Printf("Target: %#v", target) + targetID = target.TargetID + break + } + } + + targetCtx, cancel = chromedp.NewContext(ctx, chromedp.WithTargetID(targetID)) + defer cancel() + + var tabsResp []byte + err = chromedp.Run( + targetCtx, + chromedp.Evaluate(`chrome.tabs.reload();`, nil), + ) + if err != nil { + log.Fatalf("error: run tabs: %v", err) + } + + log.Printf("Tabs: %v", string(tabsResp)) +} |