puppeteer/puppeteer

GitHub Trending (daily) 工具

摘要

Puppeteer 是一个 JavaScript 库,提供高级 API,通过 DevTools 协议控制 Chrome/Chromium,常用于浏览器自动化、网页抓取和测试。

适用于 Chrome 和 Firefox 的 JavaScript API
查看原文
查看缓存全文

缓存时间: 2026/06/15 00:55

puppeteer/puppeteer

来源:https://github.com/puppeteer/puppeteer

Puppeteer 构建 (https://github.com/puppeteer/puppeteer/actions/workflows/ci.yml)

npm puppeteer 包 (https://npmjs.org/package/puppeteer)

Puppeteer 是一个 JavaScript 库,提供高级 API,通过
DevTools 协议 (https://chromedevtools.github.io/devtools-protocol/) 或 WebDriver BiDi (https://pptr.dev/webdriver-bidi) 来
控制 Chrome 或 Firefox。
Puppeteer 默认以无头模式(无可见 UI)运行

开始使用 (https://pptr.dev/docs) | API (https://pptr.dev/api) | 常见问题 (https://pptr.dev/faq) | 参与贡献 (https://pptr.dev/contributing) | 故障排查 (https://pptr.dev/troubleshooting)

安装

npm2yarn
npm i puppeteer
# 安装时下载兼容的 Chrome。  
npm i puppeteer-core
# 或者作为库安装,不下载 Chrome。  

:::note
现代包管理器(包括 npm(参见 RFC (https://github.com/npm/rfcs/pull/868))、pnpm、Yarn、Bun 和 Deno)默认会阻止依赖安装脚本。如果安装脚本被阻止,Puppeteer 在安装期间将不会下载浏览器,从而导致运行时错误。安装后,你可以手动下载所需的浏览器,运行:

npm2yarn
npx puppeteer browsers install

或者,你可以配置包管理器以允许安装脚本运行(例如,在 npm 中,将 "puppeteer" 添加到 package.json"allowScripts" 中)。
:::

MCP 安装

chrome-devtools-mcp (https://github.com/ChromeDevTools/chrome-devtools-mcp),一个基于 Puppeteer 的 MCP 服务器,用于浏览器自动化和调试。

Puppeteer 还支持实验性的 WebMCP (https://pptr.dev/guides/webmcp) API。

示例

import puppeteer from 'puppeteer';
// 或者 import puppeteer from 'puppeteer-core';

// 启动浏览器并打开一个新的空白页面。
const browser = await puppeteer.launch();
const page = await browser.newPage();

// 将页面导航到指定 URL。
await page.goto('https://developer.chrome.com/');

// 设置屏幕尺寸。
await page.setViewport({width: 1080, height: 1024});

// 使用键盘打开搜索菜单。
await page.keyboard.press('/');

// 通过可访问的输入名称在搜索框中输入内容。
await page.locator('::-p-aria(Search)').fill('automate beyond recorder');

// 等待并点击第一个结果。
await page.locator('.devsite-result-item-link').click();

// 通过唯一字符串定位完整标题。
const textSelector = await page
  .locator('::-p-text(Customize and automate)')
  .waitHandle();
const fullTitle = await textSelector?.evaluate(el => el.textContent);

// 打印完整标题。
console.log('The title of this blog post is "%s".', fullTitle);

await browser.close();

相似文章

@FakeMaidenMaker: Puppeteer 能让程序自己打开浏览器,像人一样点鼠标、输文字、抓页面内容,干活根本不用你盯着。 GitHub 上有 95k Star,是浏览器自动化领域绝对的标杆项目。 GitHub:https://github.com/puppe…

X AI KOLs Timeline

Puppeteer 是一个流行的浏览器自动化 JavaScript 库,支持控制 Chrome 和 Firefox,可用于网页抓取、自动化测试等场景,最近还集成了 MCP 协议以支持 AI 代理直接操控浏览器。

ChromeDevTools/chrome-devtools-mcp

GitHub Trending (daily)

Chrome DevTools MCP 是一个开源的模型上下文协议服务器,允许 AI 编程助手(Gemini、Claude、Cursor、Copilot)控制并检查实时 Chrome 浏览器,用于自动化、调试和性能分析。它将 Chrome DevTools 与 Puppeteer 集成,为 AI 助手提供完整的浏览器检查和自动化能力。

CloakHQ/CloakBrowser

GitHub Trending (daily)

CloakBrowser是一个开源的隐身Chromium浏览器,通过49个C++源码级别的补丁通过机器人检测测试,为Python和JavaScript提供Playwright和Puppeteer的直接替代品。