golang 使用chromedp获取页面请求日志network

 更新时间:2023年11月12日 11:57:35   作者:李渊桥  
这篇文章主要为大家介绍了golang 使用chromedp获取页面请求日志network方法实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

golang 使用chromedp获取页面请求日志network

package main
import (
    "context"
    "io/ioutil"
    "log"
    "os"
    "strings"
    "time"
    "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.Flag("window-size", "50,400"),
        chromedp.UserDataDir(dir),
    )
    allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()
    // also set up a custom logger
    taskCtx, cancel := chromedp.NewContext(allocCtx, chromedp.WithLogf(log.Printf))
    defer cancel()
    // create a timeout
    taskCtx, cancel = context.WithTimeout(taskCtx, 10*time.Second)
    defer cancel()
    // ensure that the browser process is started
    if err := chromedp.Run(taskCtx); err != nil {
        panic(err)
    }
    // listen network event
    listenForNetworkEvent(taskCtx)
    chromedp.Run(taskCtx,
        network.Enable(),
        chromedp.Navigate(`https://www.iqiyi.com/v_19rsbimvyo.html`),
        chromedp.WaitVisible(`body`, chromedp.BySearch),
    )
}
//监听
func listenForNetworkEvent(ctx context.Context) {
    chromedp.ListenTarget(ctx, func(ev interface{}) {
        switch ev := ev.(type) {
        case *network.EventResponseReceived:
            resp := ev.Response
            if len(resp.Headers) != 0 {
                // log.Printf("received headers: %s", resp.Headers)
                if strings.Index(resp.URL, ".ts") != -1 {
                    log.Printf("received headers: %s", resp.URL)
                }
            }
        }
        // other needed network Event
    })
}

服务器部署

centos安装 需要是64位系统

//安装chrome-headless 没有界面的浏览器 需要root权限
curl https://intoli.com/install-google-chrome.sh | bash 
安装 ffmpeg
http://ffmpeg.org/download.html 下载地址
wget http://www.ffmpeg.org/releases/ffmpeg-3.4.1.tar.bz2
tar -xjvf ffmpeg-3.4.1.tar.bz2
cd ffmpeg-3.4.1
./configure
make && make install

以上就是golang 使用chromedp获取页面请求日志network的详细内容,更多关于go chromedp获取志network的资料请关注脚本之家其它相关文章!

相关文章

  • Golang操作MySql数据库的完整步骤记录

    Golang操作MySql数据库的完整步骤记录

    这篇文章主要给大家介绍了关于Golang操作MySql数据库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Go语言fmt.Sprintf格式化输出的语法与实例

    Go语言fmt.Sprintf格式化输出的语法与实例

    Go 可以使用 fmt.Sprintf 来格式化字符串,下面这篇文章主要给大家介绍了关于Go语言fmt.Sprintf格式化输出的语法与实例,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 一文带你掌握Go语言I/O操作中的io.Reader和io.Writer

    一文带你掌握Go语言I/O操作中的io.Reader和io.Writer

    在 Go 语言中,io.Reader 和 io.Writer 是两个非常重要的接口,它们在许多标准库中都扮演着关键角色,下面就跟随小编一起学习一下它们的使用吧
    2025-01-01
  • 使用go mod导入本地自定义包问题

    使用go mod导入本地自定义包问题

    这篇文章主要介绍了使用go mod导入本地自定义包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Golang全局变量加锁的问题解决

    Golang全局变量加锁的问题解决

    这篇文章主要介绍了解决Golang全局变量加锁的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Go interface 接口的最佳实践经验分享

    Go interface 接口的最佳实践经验分享

    go 的接口在go的编程里面用的十分频繁,尤其是空接口的使用,因为有了接口,才使得Go语言变得异常的强大,今天给大家介绍下Go interface 接口的最佳实践经验分享,感兴趣的朋友一起看看吧
    2022-04-04
  • Golang Gorm实现自定义多态模型关联查询

    Golang Gorm实现自定义多态模型关联查询

    GORM 是一个流行的开源 ORM (Object-Relational Mapping) 库,专为 Go 语言设计,它简化了与 SQL 数据库的交互,GORM 封装了数据库操作,使得开发者能够通过简单的链式调用来执行 CRUD,本文给大家介绍了Golang Gorm实现自定义多态模型关联查询,需要的朋友可以参考下
    2024-11-11
  • golang如何设置Header Content-type

    golang如何设置Header Content-type

    这篇文章主要介绍了golang如何设置Header Content-type问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • golang flag包的使用教程

    golang flag包的使用教程

    golang 的 flag 包是用于处理命令行参数的工具包,我们可以基于这个包来开发自定义的命令行工具,下面小编就来为大家介绍一下flag包的具体使用吧
    2023-09-09
  • Go语言等待组sync.WaitGrou的使用示例

    Go语言等待组sync.WaitGrou的使用示例

    本文主要介绍了Go语言等待组sync.WaitGrou的使用示例,sync.WaitGroup只有3个方法,Add(),Done(),Wait(),下面就来具体的介绍一下如何使用,感兴趣的可以了解一下
    2024-08-08

最新评论