首页 > 其他分享 >browserless hooks 简单说明

browserless hooks 简单说明

时间:2024-07-01 09:01:39浏览次数:1  
标签:browserless hooks args ts external 简单 import

browserless提供了hooks 能力,默认实现都为空,以下简单说明下内部处理

默认实现

如下图

内部处理

  • hooks.ts 定义
import {
  AfterResponse,
  BeforeRequest,
  BrowserHook,
  PageHook,
} from '@browserless.io/browserless';
import { EventEmitter } from 'events';
 
// KEPT for backwards compatibility reasons since some downstream
// docker images will override these files to inject their own hook
// behaviors
// @ts-ignore
import { default as afterRequest } from '../external/after.js';
// @ts-ignore
import { default as beforeRequest } from '../external/before.js';
// @ts-ignore
import { default as browserHook } from '../external/browser.js';
// @ts-ignore
import { default as pageHook } from '../external/page.js';
 
export class Hooks extends EventEmitter {
  before(args: BeforeRequest): Promise<boolean> {
    return beforeRequest(args);
  }
 
  after(args: AfterResponse): Promise<unknown> {
    return afterRequest(args);
  }
 
  page(args: PageHook): Promise<unknown> {
    return pageHook(args);
  }
 
  browser(args: BrowserHook): Promise<unknown> {
    return browserHook(args);
  }
 
  /**
   * Implement any browserless-core-specific shutdown logic here.
   * Calls the empty-SDK stop method for downstream implementations.
   */
  public shutdown = async () => {
    await this.stop();
  };
 
  /**
   * Left blank for downstream SDK modules to optionally implement.
   */
  public stop = () => {};
}
  • 使用

如下图,可以看到不少地方都有使用到,核心就是对于几个hooks 的调用

说明

默认hooks 是放在external 文件夹中的几个文件,如果我们希望自己扩展,就可以重写几个实现,对于基于docker 部署的,直接进行文件替换

参考资料

src/hooks.ts
https://docs.browserless.io/
https://github.com/browserless/browserless

标签:browserless,hooks,args,ts,external,简单,import
From: https://www.cnblogs.com/rongfengliang/p/18213379

相关文章

  • 元素的简单操作
    针对元素的简单操作:(1)点击:element.click() (2)输入内容、清除内容:element.send_keys("内容")element.clear() (3)返回元素尺寸、坐标:element.sizeelement.location (4)获取元素标签文本:element.text (5)获取元素属性值:element.get_attribute("属性名") (6)检查元素:是......
  • 【SQL】优化慢 SQL的简单思路
    优化慢SQL需要综合考虑多个方面,包括查询的结构、索引的使用、表结构设计等。以下是一些常见的SQL优化技巧和步骤:1.检查查询计划使用数据库提供的工具查看查询计划(例如MySQL的EXPLAIN命令)可以帮助了解查询的执行路径,找出性能瓶颈。EXPLAINSELECT*FROMyour_ta......
  • 影刀RPA:简单易用的办公自动化工具,引领职场新风尚
    1.产品介绍1.1功能特点1.1功能特点智能化操作:影刀RPA提供直观简洁的界面,用户无需编写复杂的代码,通过简单的拖拽和点击操作即可完成流程设计,实现自动化流程的快速部署和执行。多样化适配:影刀RPA支持与多种系统和应用程序的集成,包括ERP、CRM、邮箱等,能够灵活应对企......
  • AI姓氏头像,简单到有手就行!详细教程
    这种AI姓氏头像的账号,大家都刷到过吧!阅读篇篇10万+,真是太火爆了!这种艺术字的制作方法很简单,而且是免费的!现在就给大家解密这种漂亮的艺术字是怎么做的!详细教程正式开始!大家只要跟着教程一步一步来,就能做出非常漂亮的AI形式签名!百度网盘请输入提取码百度网盘为您提供文......
  • 电商现状的简单分析和后续的思考
    目录前言我的经营策略商品特点商业模式:找大客户B2B不适合现在的电商目标用户不同流量费用过于昂贵我的破解方法:地推+自媒体地推自媒体前言我大概是从24年3月份开始搞电商的,开的是淘宝店,简单说一下我的感受我的经营策略商品特点我家是做五金阀门的,所以我的商品的特点就是标......
  • WPF 做一个超级简单的 1024 数字接龙游戏
    这是一个我给自己做着玩的游戏,没有什么复杂的界面,就一些简单的逻辑游戏的规则十分简单,那就是有多个列表。程序会给出一个数字,玩家决定数字放在哪个列表里面。如果放入列表里面的数字和列表里面最后一个数字相同,那两个数字将会叠加进行合并,合并两个1024将会自动清理掉整个列表......
  • 简单的聊天程序(二):配置Vue-cli以加速开发
            上一章--简单的聊天程序(一):HTML+CSS实现响应式界面已经实现了响应式的界面,接下来我们要实现一些简单的交互操作。        预期结果     在左边切换不同的对话人物,并显示与其聊天记录;在输入框输入文字后按下发送按钮就会显示在上方的聊天记......
  • 【java问答小知识19】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知
    Java中的"java.util.concurrent.locks.StampedLock"的"tryConvertToReadLock()"方法如何工作?回答:尝试将当前的写锁转换为读锁,并返回一个表示锁定状态的戳记。Java中的"java.util.concurrent.locks.StampedLock"的"tryConvertToWriteLock()"方法有什么特点?回答:尝试将当......
  • 【java问答小知识18】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知
    Java中的"java.util.concurrent.locks.Lock"接口有哪些实现类?回答:“Lock"接口的实现类包括"ReentrantLock”、“ReadWriteLock"的实现类,以及"StampedLock”。Java中的"java.util.concurrent.locks.ReentrantLock"如何实现重入?回答:"ReentrantLock"通过维护一个持有计......
  • Quartz的简单使用:实现简单的定时任务
    在Quartz中,你可以定义和调度多个Job。每个Job都有对应的JobDetail和Trigger。1.添加依赖确保你的项目中包含Quartz的依赖。例如,如果你使用的是Maven,可以在pom.xml中添加以下依赖:<dependency><groupId>org.quartz-scheduler</groupId><artifactId>qu......