首页 > 其他分享 >browserless 部署无头浏览器到docker中的工具

browserless 部署无头浏览器到docker中的工具

时间:2024-04-18 11:56:13浏览次数:28  
标签:browserless const await puppeteer start 浏览器 docker page

browserless 部署无头浏览器到docker 中的工具

包含的特性

  • 支持可配置的并行以及请求队列
  • 开箱即用的字体支持
  • debug 视图支持
  • 交互式的puppeteer 调试器
  • 支持puppeteer 以及playwright
  • 支持基于websocket 以及rest api 的请求控制(可以进行pdf 生成,图片处理等)

简单使用

  • docker 部署
docker run -p 3000:3000 ghcr.io/browserless/chromium
  • 代码使用

可以通过启动服务的编辑器,生成参考代码
package.json

{
  "name": "browserless-export",
  "description": "Exported package from browserless, ready to go!",
  "version": "1.0.0",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "puppeteer-core": "8.0.0"
  }
}

index.js

const { default: start } = require('./start.js');
const puppeteer = require('puppeteer-core');
 
(async () => {
  const browser = await puppeteer.connect({
    browserWSEndpoint: 'ws://localhost:3000'
  });
  const page = await browser.newPage();
 
  await start({ page, browser });
 
  return browser.close();
})()
.then(() => console.log('Script complete!'))
.catch((err) => console.error('Error running script' + err));

start.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = async ({ page }) => {
    await page.goto('https://baidu.com');
    const apiContent = await page.evaluate(() => document.querySelector('html').innerHTML);
    console.log(apiContent);
};

运行以上可以获取内容

说明

browserless 对于非商业场景使用是免费的,以上使用部分比较简单是基于puppeteer-core api 实际上browserless 还包含了比较完整的rest api 可以方便调用(比如爬虫,pdf 生成,屏幕截屏等不少方便的能力)

参考资料

https://github.com/browserless/browserless
https://github.com/browserless/browserless/blob/main/bin/scaffold/README.md
https://docs.browserless.io/HTTP-APIs/apis

标签:browserless,const,await,puppeteer,start,浏览器,docker,page
From: https://www.cnblogs.com/rongfengliang/p/18140026

相关文章

  • ES和kibana docker启动成功后浏览器却显示无法访问
    前一天还能正常访问,第二天再次启动虚拟机后却无法访问ES和kibana了 解决方法删除docker创建的kibana和es容器,重点!!一定要同步删除es-net网络。 然后重新创建网络,ES容器和kibana容器具体操作步骤可查看  SpringCloud(七.1)ES(elasticsearch)+IK分词器  刷新页面查看效......
  • Ranorex无法使用spy识别element(只能识别外部container) --针对edge浏览器
    1.问题问题如标题,这是一个很严重的问题,表明我们不仅不能通过track识别元素,更重要的是spy无法识别UI元素,就会导致我们无法通过自动化脚本来控制UI元素,实现自动化测试!!!2.解决2.1确保不要同时开启两个Chrome用例(chorme或者edge)2.2可以开启InternetExplorer模式(针......
  • Dockerfile - Install protoc
     FROM--platform=$BUILDPLATFORMalpineasprotocARGBUILDPLATFORM=linux/amd64TARGETOS=linuxTARGETARCH=amd64#downloadtheprotocbinaryfromgithub#Weunzipthefileinto/usr/local.Noticethatweareextractingboththeprotoc#binary(/bin/pr......
  • Docker - windows11安装docker desktop
    一、启动支持虚拟机等功能在电脑上打开“控制面板”->“程序”->“启动或关闭Windows功能”。启用以下功能(由于我的系统是Win11家庭版,所以不自带Hype-V功能,如支持则启动)二、进入Docker官网首先先到Docker官网下载最新官方DockerforWindows链接:Docker下载三、安装Doc......
  • docker compose
    目录1.安装DockerCompose2.编写docker-compose.yml文件3.启动、停止和重启集群4.配置和管理复杂集群5.示例应用集群6.进入集群中的容器7.docker-compose常用命令DockerCompose是一个用于定义和运行多容器Docker应用程序的工具。它允许您使用YAML文件(通常命名......
  • docker基本命令及使用
    基本命令及使用#文件拷贝dockercp#将文件拷贝到容器内部dockercp文件名容器名或id:容器路径dockercptest.jarcentos:/usr/local#将容器内部文件拷贝到外部dockercp容器名或id:容器路径/文件名路径dockercpcentos:/usr/localtest2.jar#目录挂载d......
  • docker镜像的复制
    有时候pull镜像很慢或者失败,需要从其他的机器传到服务器,就可以使用docker镜像的复制转贴,思路就是先把本地镜像打包,然后用ftp工具传到目标服务器,最后服务器解包还原打包dockersave-o~/alpine.3.16.taralpine:3.16还原dockerload-ialpine.3.16.tar打tag,这条命令就是......
  • docker部署nginx
    拉取镜像dockerpullnginx创建映射目录mkdir-p/data/server/nginx/{conf,log,html}先创建一个nginx容器,然后将容器中的nginx.conf文件和conf.d文件夹复制到宿主机创建容器dockerrun-d--namenginx01-p20080:80nginx将容器中的nginx.conf文件复制到宿主机docker......
  • docker部署mysql
    docker部署mysqlmkdir-p/data/docker/mysql5.7/{data,conf.d}mkdir-p/data/docker/mysql8/{data,conf.d}version:'3'services:mysql_5.7:image:mysql:5.7.40restart:alwaysports:-13306:3306environment:-MYSQL_ROOT_PAS......
  • docker部署redis
    拉取镜像dockerpullredis:6.2.6创建映射目录和文件mkdir-p/data/server/docker_redis/data官网下载对应版本redis.conf,放在/data/server/docker_redis/目录下运行redisdockerrun-d-p6379:6379--name=redis--privileged=true-v/data/server/docker_redis/redis.c......