如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Browserless Chrome是一个Docker镜像,允许远程客户端连接并执行无头浏览器工作。它支持标准的Puppeteer、Selenium和Playwright库,并提供基于REST的API用于常见操作(如数据采集、PDF生成等)。该镜像解决了无头浏览器部署中的常见问题,如缺少系统字体、外部库依赖、性能优化等,同时支持会话管理和文件下载等边缘场景。
注意:这是Browserless的旧v1版本,建议使用https://github.com/browserless/browserless%E3%80%82
Browserless监听传入的WebSocket请求(通常由大多数库发出)和预构建的REST API(用于PDF生成、图片处理等常见功能)。当WebSocket连接到Browserless时,它会启动Chrome并将请求代理到Chrome中。会话完成后,Chrome关闭并等待新的连接。部分库使用Chrome的HTTP端点(如/json)来检查可调试目标,Browserless也支持这些端点。
应用程序仍需运行脚本本身(类似于数据库交互),这使您可以完全控制选择的库和升级时机,避免因Chrome调试协议频繁变更带来的问题。
bashdocker run -p 3000:3000 browserless/chrome
启动后,访问http://localhost:3000/即可使用交互式调试器。更多选项请查看完整文档。
Browserless提供两种调试方式:
基于Web的调试器:用于尝试小型代码片段,无需设置新项目。公共调试器可访问此处。
活动会话调试器:跟踪HTTP请求和Puppeteer会话的浏览器状态,可在Web调试器中查看当前运行的会话。通过点击左上角菜单图标,可查看所有活动会话并通过Chrome远程DevTools查看。也可通过/session API获取会话的JSON表示。
若会话执行过快,可在puppeteer.connect调用(或HTTP REST调用)中添加?pause查询参数,Browserless会暂停脚本直到调试器连接。
调试器功能包括:
debugger;和console.log调试console标签中显示index.js和package.json若在Docker镜像(或Node)前使用NGINX,需代理Upgrade头:
nginxlocation / { proxy_pass YOUR_DOCKER_IMAGE_LOCATION; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
可直接拉取M1专用镜像:
bashdocker pull browserless/chrome:1-arm64
若在amd64机器(非M1 Mac)上构建多平台镜像:
bash# 设置ARM64构建环境 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # 创建构建器 docker buildx create --name builder --driver docker-container --use # 初始化构建器 docker buildx inspect --bootstrap # 构建ARM64镜像 docker buildx build --platform linux/arm64 -t browserless/chrome:arm64 .
注意:ARM64构建中Chromium版本可能与Puppeteer不完全匹配,可能导致潜在问题。
通过browserWSEndpoint指定远程Chrome位置:
之前
jsconst browser = await puppeteer.launch();
之后
jsconst browser = await puppeteer.connect({ browserWSEndpoint: 'ws://localhost:3000' });
更新测试代码以使用远程连接:
之前
jsconst webdriver = require('selenium-webdriver'); const fs = require('fs'); const chromeCapabilities = webdriver.Capabilities.chrome(); chromeCapabilities.set( 'chromeOptions', { args: [ '--headless', '--no-sandbox', ], } ); const driver = new webdriver.Builder() .forBrowser('chrome') .withCapabilities(chromeCapabilities) .build();
之后
jsconst webdriver = require('selenium-webdriver'); const fs = require('fs'); const chromeCapabilities = webdriver.Capabilities.chrome(); chromeCapabilities.set( 'chromeOptions', { args: [ '--headless', '--no-sandbox', ], } ); const driver = new webdriver.Builder() .forBrowser('chrome') .withCapabilities(chromeCapabilities) .usingServer('http://localhost:3000/webdriver') // 添加此行 .build();
通过远程连接方式使用:
之前
jsconst browser = await pw.chromium.launch();
之后
jsconst browser = await pw.chromium.connect({ browserWSEndpoint: 'wss://chrome.browserless.io?token=YOUR-API-TOKEN', });
以下是 browserless/chrome 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务