Google chrome 如何在chromedp-like Puppeter RequestInterception中阻止css和图像请求?

Google 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

我试图在chromedp中阻止CSS和图像请求,但我找不到关于这一点的适当细节或代码。如果有人知道,请给我一些参考代码

在Puppeter中,我使用下面的代码来阻止图像和CSS

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)
                }
            }()
        }
    }
}