chromedp网络监听_动态爬虫三:监听网络事件 + 监听js事件

一: 概述


       上两篇文章介绍了cdp协议和chromedp库,从这篇文章开始动手实战一下,我们要拿到页面上更多的网络请求,最直接的想法就是类似于开发者工具里的network,只有一有网络请求就显示在列表里(在network里隐藏的网络请求后续讨论),完后页面加载完后就可以浏览页面操作页面了,比如 点击,滑动等等,这些都是 js 的事件,如果能把所有绑定了事件的元素都找到, 再去触发它,那么网络请求那边就能监听到。

二:小试牛刀


这是开发者工具的网络窗口:

c476486f0e47e13877c46d9b04b848c8.png

思路有了接下来我们就是要找到一个合适的事件,打开协议监控(参考上几篇文章),完后刷新页面,完后搜索 network 就会看到和网络相关的事件了(network是来源于cdp协议文档里)

0a13ad813581bf3f4ad4ca999ad12ba4.png

从这个字面理解网络请求即将发送,很适合啊,就它了。

291f6552b540235fac790cf684b2ca4b.png

顺便看一下其他事件,下面这个很适合采集响应

4f216bbbe9342f7500c05d444aeb7d4f.png

使用之前搭建的框架试一下,代码结构如下:

9f83111f535a43cfc85bc2605932dc82.png

项目结构等完后单独写篇文章讨论,上面提到的逻辑都写在 scan.go 中了,总体代码如下:

func run(cmd *cobra.Command, args []string) {
       sugar := logger.Sugar()   var ws sync.WaitGroup   listRequest := list.New()   listResponse := list.New()   options := append(chromedp.DefaultExecAllocatorOptions[:],      chromedp.Flag("headless", true),      chromedp.Flag("disable-gpu", false),      chromedp.Flag("disable-extensions", true),      chromedp.Flag("hide-scrollbars", false),      chromedp.Flag("mute-audio", false),      chromedp.Flag("enable-automation", false),      chromedp.UserAgent(`Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36`),   )   defaultCtx, cancel := chromedp.NewExecAlloca
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值