返回顶部
P

Playwright Download FixPlaywright下载修复

自动处理 Playwright 下载文件名问题,监听下载事件并用正确的原始文件名保存文件。解决 Playwright 下载的文件名是 UUID 而不是原始文件名的问题。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
167
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

Playwright Download Fix

Playwright 下载修复

Playwright 下载的文件名是 UUID 而不是原始文件名?这个技能帮你自动修复这个问题。

问题

当使用 Playwright 下载文件时,经常会遇到:

  • - 浏览器中显示的文件名是 f63a84ec-abd1-48fa-a748-11ebeca07935(UUID)
  • 但在真实 Chrome 中下载的文件名是正确的,比如 MVIMG20250706131754.jpg

原因

  1. 1. Playwright 默认下载到临时目录,使用 UUID 作为临时文件名
  2. 网站检测到自动化工具,返回了临时文件名
  3. 需要拦截 download 事件并使用 suggestedFilename() 获取原始文件名

解决方案

这个技能提供了一个 DownloadHelper 模块,自动监听下载事件并用正确的文件名保存文件。



🚀 快速启动

方式 1: 使用 pw-start 命令(推荐)

确保快捷命令已添加到 shell 配置文件:

bash

添加到 ~/.zshrc(首次使用)


echo alias pw-start=cd ~/.openclaw-autoclaw/workspace && node pw-start.js >> ~/.zshrc
source ~/.zshrc

使用

pw-start # 打开默认页面(智联招聘) pw-start https://example.com # 打开指定 URL

每次运行都会自动加载 DownloadHelper 技能并显示配置信息:

========================================
📋 配置信息
========================================
🌐 User-Agent: 真实 Chrome (macOS)
📂 下载目录: /Users/allen/downloads
🔍 调试模式: 开启
========================================

方式 2: 直接运行独立脚本

bash
cd ~/.openclaw-autoclaw/skills/playwright-download-fix
node standalone-script.js

方式 3: 在现有项目中集成模块

bash

复制模块到项目


cp ~/.openclaw-autoclaw/skills/playwright-download-fix/download-helper.js .

然后在脚本中使用:

javascript
const { chromium } = require(playwright);
const DownloadHelper = require(./download-helper);

async function myScript() {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({
acceptDownloads: true,
});

const page = await context.newPage();

// 初始化下载助手
const helper = new DownloadHelper(page, {
downloadDir: ~/downloads,
debug: true
});
const downloadDir = await helper.setup();
console.log(📂 下载目录: ${downloadDir});

// 你的自动化代码...
await page.goto(https://example.com);
await page.click(#download-button);

// 获取下载的文件列表
console.log(下载的文件:, helper.getDownloadedFiles());

await browser.close();
}

myScript();



📋 启动环境与要求

系统要求

  • - 操作系统: macOS / Linux / Windows
  • Node.js: >= 14.x
  • Playwright: 已安装

依赖安装

bash

安装 Playwright(如果未安装)


npm install playwright

安装浏览器

npx playwright install chromium

启动条件

  1. 1. 下载目录权限: 确保对下载目录(默认 ~/downloads)有写权限
  2. 浏览器缓存: 首次运行会下载 Chromium(约 170MB)
  3. 内存要求: 至少 4GB 可用内存
  4. 网络连接: 部分网站需要网络访问

启动配置

默认配置(可在 pw-start.js 中修改):

配置项默认值说明
User-AgentChrome 122.0.0.0 (macOS)模拟真实浏览器
Locale
zh-CN | 中文环境 |
| Timezone | Asia/Shanghai | 中国时区 |
| 下载目录 | ~/downloads | 文件保存位置 |
| 调试模式 | 开启 | 显示下载信息 |

反自动化检测

为了更接近真实浏览器,默认启用以下配置:

javascript
const context = await browser.newContext({
userAgent: realChromeUA,
locale: zh-CN,
timezoneId: Asia/Shanghai,
bypassCSP: true,
javaScriptEnabled: true,
acceptDownloads: true,
});



DownloadHelper API

构造函数

javascript
new DownloadHelper(page, options)

参数:

  • - page (Page) - Playwright page 实例
  • options (Object) - 配置选项

- downloadDir (string) - 下载目录路径,支持 ~ 符号,默认 ~/downloads
- debug (boolean) - 是否显示调试信息,默认 false

方法

setup()

初始化下载监听器,创建下载目录(如果不存在)。

javascript
const downloadDir = await helper.setup();

返回: 下载目录的绝对路径

getDownloadedFiles()

获取本次会话中下载的所有文件路径列表。

javascript
const files = helper.getDownloadedFiles();
console.log(下载的文件:, files);

返回: 文件路径数组

clearHistory()

清空下载历史记录。

javascript
helper.clearHistory();

dispose()

移除下载监听器。

javascript
helper.dispose();



完整示例

示例 1: 下载单个文件

javascript
const { chromium } = require(playwright);
const DownloadHelper = require(./download-helper);

async function downloadSingle() {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({
acceptDownloads: true,
});

const page = await context.newPage();

const helper = new DownloadHelper(page, {
downloadDir: ~/downloads,
debug: true
});
await helper.setup();

await page.goto(https://example.com);
await page.click(#download-button);
await page.waitForTimeout(3000);

const files = helper.getDownloadedFiles();
console.log(下载的文件:, files);

await browser.close();
}

downloadSingle();

示例 2: 批量下载

javascript
const { chromium } = require(playwright);
const DownloadHelper = require(./download-helper);

async function downloadMultiple(urls) {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({ acceptDownloads: true });
const page = await context.newPage();

const helper = new DownloadHelper(page, {
downloadDir: ~/downloads,
debug: true
});
await helper.setup();

for (const url of urls) {
await page.goto(url);
await page.click(.download-link);
await page.waitForTimeout(2000);
}

console.log(共下载 ${helper.getDownloadedFiles().length} 个文件);

await browser.close();
}

downloadMultiple([url1, url2, url3]);

示例 3: 智联招聘下载简历

javascript
const { chromium } = require(playwright);
const DownloadHelper = require(./download-helper);

async function downloadResumes() {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({
userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36,
acceptDownloads: true,
});

const page = await context.newPage();

const helper = new DownloadHelper(page, {
downloadDir: ~/downloads,
debug: true
});
await helper.setup();

// 导航到搜索页面
await page.goto(https://rd6.zhaopin.com/app/search);

// 手动登录...

// 搜索候选人并下载简历
// ...

await browser.close();
}

downloadResumes();



工作原理

  1. 1. 监听下载事件:通过 page.on(download, ...) 监听所有下载
  2. 获取原始文件名:使用 download.suggestedFilename() 获取服务器返回的真实文件名
  3. 保存到指定目录:用正确的文件名保存到用户指定的目录
  4. 追踪下载历史:记录所有下载的文件路径,方便后续处理

故障排除

问题 1: 下载的文件名仍然是 UUID

可能原因:

  • - 网站检测到了自动化工具
  • User-Agent 不够真实
  • 缺少必要的请求头

解决方案:

  1. 1. 使用更真实的 User-Agent
  2. 添加更多请求头
  3. 考虑使用 puppeteer-extra-plugin-stealth
  4. 连接到真实的 Chrome 实例(CDP)

javascript
// 连接真实 Chrome

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 playwright-download-fix-1776096303 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 playwright-download-fix-1776096303 技能

通过命令行安装

skillhub install playwright-download-fix-1776096303

下载

⬇ 下载 Playwright Download Fix v1.0.1(免费)

文件大小: 9.1 KB | 发布时间: 2026-4-14 10:17

v1.0.1 最新 2026-4-14 10:17
Playwright Download Fix 1.0.1 Changelog

- 增加了多种启动方式说明,包括推荐的 pw-start 命令及相关 alias 配置方法。
- 提供详细启动环境要求和依赖安装步骤,便于首次使用者配置环境。
- 丰富 DownloadHelper API 文档,新增 clearHistory() 和 dispose() 方法介绍。
- 拓展完整使用示例,包括单文件、批量下载及实际招聘网站下载场景代码。
- 增强故障排除内容,覆盖更多常见问题和解决方法,便于定位并解决异常。
- 新增配置文件说明,明确主启动脚本及模块用途,降低集成门槛。

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部