browserless hooks 简单说明
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-07-01 kubeskoop 阿里开源的k8s 网络分析工具
2023-07-01 aws 开源的微前端发现实现 frontend-discovery
2023-07-01 长亭waf-ce 版本嵌入模式集成说明
2022-07-01 dremio 对于iceberg 的操作支持
2021-07-01 cube.js 官方关于cube store 的一些实践说明
2020-07-01 amqproxy 一个很不错的rabbitmq proxy
2020-07-01 Maintaining Long-Lived Connections with AMQProxy