在 Docker 中部署无头 Chrome:在 Browserless 中运行

news/2024/12/21 19:38:29/

什么是 Browserless?

Browserless 是一款基于云的浏览器解决方案,旨在实现高效的浏览器自动化、网页抓取和测试。

它利用 Nstbrowser 的指纹库,实现随机指纹切换,确保流畅的数据收集和自动化。得益于其强大的云基础设施,Browserless 简化了对多个浏览器实例的访问,从而更轻松地管理自动化任务。

您对网页抓取和 Browserless 有什么奇思妙想和疑问吗?
让我们看看其他开发者在 Discord 和 Telegram 上分享了什么!

Browserless 如何运作?

Browserless 通过提供一个无头浏览器服务来运作,允许用户在无需图形界面的情况下执行浏览器自动化任务。

它使开发者能够通过 API 运行基于浏览器的任务,例如网页抓取、自动化测试和渲染网页。通过在云环境中运行,Browserless 简化了浏览器自动化过程,无需手动设置或维护浏览器基础设施。

Browserless 支持 Puppeteer 和 Playwright 等流行库,允许用户以编程方式与网站交互。其基于 Docker 的基础设施支持可扩展和灵活的部署,使其适用于小型和企业级应用程序。它可以集成到工作流程中,以自动化重复性任务或从需要浏览器的网站收集数据。

如何在 Docker 中部署 Headlesschrome

第 1 步:获取您的 API 密钥

为了获得更好的体验,请在 Nstbrowser 上创建一个新帐户。

使用您注册的信息登录 Nstbrowser 客户端。成功登录后,不要忘记从 API 菜单中生成您的唯一 API 密钥!

API 密钥

第 2 步:获取 Nstbrowserless 镜像并运行

您需要获取 API Key 并替换以下 {YOUR_API_KEY} 部分。

docker run -it -e TOKEN={YOUR_API_KEY} -e SERVER_PORT=8848 -p 8848:8848 --name nstbrowserless nstbrowser/browserless:0.0.1-beta

用您的 API 密钥替换

如何在 Docker 容器中使用 Browserless?

您可以通过 Puppeteer、Playwright、Chromedp 或其他 CDP 库连接到无头浏览器,以实现无头浏览器的操作和截图功能。

Puppeteer

Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来控制 Chrome 浏览器,并支持通过 DevTools 协议进行操作。

安装 Puppeteer

npm install puppeteer

准备 puppeteer.js 文件

const puppeteer = require("puppeteer");(async () => {const host = "127.0.0.1:8848"; // 替换为您的 Docker 容器 IPconst browserWSEndpoint = `ws://${host}/ws/connect`;try {const browser = await puppeteer.connect({browserWSEndpoint: browserWSEndpoint,});const page = await browser.newPage();await page.goto("https://google.com", { waitUntil: 'networkidle2' }); // 等待网络空闲await page.screenshot({ path: "screenshot.png", fullPage: true }); // 拍摄全页面截图console.log("Screenshot taken and saved as screenshot.png");await browser.close(); // 关闭浏览器连接} catch (err) {console.error("Error occurred:", err);}
})();

运行您的脚本

node puppeteer.js

运行后,您可以看到无头浏览器按我们预期工作:

无头浏览器工作

现在,项目已完成,您可以找出生成的 screenshot.png

Playwright CDP

Playwright 是一个用于 Web 测试和自动化的框架,允许通过单个 API 测试 Chrome 浏览器。

安装 Playwright

npm install playwright

准备 playwright.js 文件

import { chromium } from "playwright";(async () => {const host = "127.0.0.1:8848"; // 替换为您的 Docker 容器 IPconst browserWSEndpoint = `ws://${host}/ws/connect`;try {const browser = await chromium.connectOverCDP(browserWSEndpoint);const context = await browser.newContext();const page = await context.newPage();await page.goto("https://www.google.com/", { waitUntil: 'networkidle' }); // 等待网络空闲await page.screenshot({ path: "screenshot.png" }); // 拍摄全页面截图console.log("Screenshot taken and saved as screenshot.png");await browser.close(); // 关闭浏览器连接} catch (err) {console.error("Error occurred:", err);}
})();

运行您的脚本

node playwright.js

与 Puppeteer 相同,运行后,您也可以找出生成的 screenshot.png

总结

Browserless 使网页抓取和自动化变得容易。在本博客中,您可以看到:

  • 在 Docker 中部署 headlesschrome 的有效方法。
  • 在 Docker 容器中使用 Browserless 的详细步骤。
    容器中运行浏览器提供了很大的灵活性和可扩展性。它也比传统的基于 VM 的实例便宜得多。

http://www.ppmy.cn/news/1527402.html

相关文章

iOS18相册大改遭吐槽,iOS18相册恢复iOS17的办法有哪些?

9月17日消息,苹果公司日前已推送了iOS 18正式版更新,除了支持高度自定义主屏幕、应用锁、游戏模式等功能外,自带的相册App也迎来了前所未有的重大更新。 然而,iOS 18正式版推送后,“iOS 18还我妈生相册、iOS 18丑等话…

向量数据库介绍及其与人工智能的关系

向量数据库是一种专门用于存储、管理和检索多维向量数据的数据库系统,以下是对它的详细介绍: 基本概念: 向量是由多个数值组成的数组,这些数值代表了数据在不同维度上的特征或属性。向量数据库就是以向量的形式存储数据&#xff0…

opencv 之 实战项目 识别银行卡上的数字

OpenCV 之 实战项目:识别银行卡上的数字 引言 在日常生活中,银行卡的识别是一个常见的需求,特别是在金融领域。本实战项目旨在使用 OpenCV 库来识别银行卡上的数字。我们将通过模板匹配的方法,结合图像处理技术,来准…

《A++ 敏捷开发》- 26 根与翼

中国社会一直非常强调家庭价值观,希望实现家族的持续传承,家族有族谱,代代相传的关系对每个家庭成员的成长产生深远影响。我们每个人都只是人类进化过程中的短暂过渡。父母普遍希望把最好的东西传承给下一代。然而我们需要问自己,…

MySQL 变量查询如何使用索引

MySQL 变量查询如何使用索引 1. 问题现象 在存储过程中,有通过变量进行数据查询,执行时间长,不符和预期,经过分析,发现是有一个变量查询的效率低,不走索引造成的。 在定义变量查询,不能使用索…

secureCRT 工具连接sshd服务报错

报错如下: Key exchange failed. No compatible key exchange method. The server supports these methods: sntrup761x25519-sha512openssh.com,curve25519-sha256,ecdh-sha2-nistp256,diffie-hellman-group14-sha256 No compatible hostkey. The server supports…

prometheus 集成 grafana 保姆级别安装部署

前言 本文 grafana 展示效果只需要 prometheus node_exporter grafana 其他的选择安装 环境和版本号 系统: CentOS 7.9 prometheus: 2.54.1 pushgateway: 1.9.0 node_exporter: 1.8.2 alertmanager: 0.27.0 grafana:11.2.0 官网:https://prometheus.io/ 下载地址:h…

【使用C语言创建一个简单的HTTP服务器】

创建一个简单的HTTP服务器使用C语言涉及到网络编程的基础,特别是使用套接字(sockets)进行网络通信。这里提供一个非常基础的HTTP服务器实现案例,该服务器能够监听HTTP请求,对简单的GET请求返回HTML页面。 准备工作 确…