Я пытаюсь заблокировать CSS и запрос изображений в chromedp, но не могу найти нужную информацию или код об этом.если кто-нибудь знает, пожалуйста, сообщите мне некоторый ссылочный код.
в кукловоде, я использую приведенный ниже код для блокировки изображения и 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 ниже, я пытался, но не работал,https://github.com/chromedp/chromedp/issues/260
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)
}
}()
}
}
}