Google chrome 如何在chromedp-like Puppeter RequestInterception中阻止css和图像请求?
我试图在chromedp中阻止CSS和图像请求,但我找不到关于这一点的适当细节或代码。如果有人知道,请给我一些参考代码 在Puppeter中,我使用下面的代码来阻止图像和CSSGoogle chrome 如何在chromedp-like Puppeter RequestInterception中阻止css和图像请求?,google-chrome,google-chrome-headless,headless-browser,Google Chrome,Google Chrome Headless,Headless Browser,我试图在chromedp中阻止CSS和图像请求,但我找不到关于这一点的适当细节或代码。如果有人知道,请给我一些参考代码 在Puppeter中,我使用下面的代码来阻止图像和CSS await page.on('request', (req) => { if ( req.resourceType() == 'stylesheet' || req.resourceType() == 'font' || req.resourceType() == 'im
await page.on('request', (req) => {
if (
req.resourceType() == 'stylesheet' ||
req.resourceType() == 'font' ||
req.resourceType() == 'image' ||
req.resourceType() == 'media'
) {
req.abort();
} else {
req.continue();
}
});
按照下面的github方法,我尝试了,但没有成功。
在发布这个问题之前,我试过了。请提供一个最小的可重复的例子。现在你可以检查这个了。你的代码在这里工作得很好。您是否已使用
go get-u github.com/chromedp/chromedp
更新了您的依赖项?请参阅我在发布此问题之前尝试过的。请提供一个最小的可复制示例。Master h-cbon现在您可以在此检查您的代码工作正常。您是否使用go-get-u github.com/chromedp/chromedp
更新了依赖项?
package main
import (
"context"
"io/ioutil"
"os"
"time"
"github.com/chromedp/cdproto/cdp"
"github.com/chromedp/cdproto/fetch"
"github.com/chromedp/cdproto/network"
"github.com/chromedp/chromedp"
)
func main() {
dir, err := ioutil.TempDir("", "chromedp-example")
if err != nil {
panic(err)
}
defer os.RemoveAll(dir)
opts := append(chromedp.DefaultExecAllocatorOptions[:],
chromedp.DisableGPU,
chromedp.NoDefaultBrowserCheck,
chromedp.Flag("headless", false),
chromedp.Flag("ignore-certificate-errors", true),
chromedp.UserDataDir(dir),
)
allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
defer cancel()
// also set up a custom logger
taskCtx, cancel := chromedp.NewContext(allocCtx)
defer cancel()
// create a timeout
taskCtx, cancel = context.WithTimeout(taskCtx, 100*time.Second)
defer cancel()
// ensure that the browser process is started
if err := chromedp.Run(taskCtx); err != nil {
panic(err)
}
// listen network event
chromedp.ListenTarget(taskCtx, DisableImageLoad(taskCtx))
chromedp.Run(taskCtx,
network.Enable(),
fetch.Enable(),
chromedp.Navigate(`http://www.yahoo.com`),
chromedp.WaitVisible(`body`, chromedp.BySearch),
)
}
func DisableImageLoad(ctx context.Context) func(event interface{}) {
return func(event interface{}) {
switch ev := event.(type) {
case *fetch.EventRequestPaused:
go func() {
c := chromedp.FromContext(ctx)
ctx := cdp.WithExecutor(ctx, c.Target)
if ev.ResourceType == network.ResourceTypeImage {
fetch.FailRequest(ev.RequestID, network.ErrorReasonConnectionAborted).Do(ctx)
} else {
fetch.ContinueRequest(ev.RequestID).Do(ctx)
}
}()
}
}
}