如何将有道翻译历史记录一次性导出为Excel文件?

功能定位:为什么官方没给“一键导出”
核心关键词“有道翻译历史记录导出”在 2026 年 2 月的最新版(v11.5.1)里仍没有原生按钮。官方把记录当作“本地缓存+云端同步”混合存储,优先保证查询速度而非批量下载,于是留下一条可复现的浏览器级缺口:网页端历史接口返回 JSON,可被前端脚本拦截并落地为 Excel。
经验性观察,这一设计并非疏漏,而是兼顾「瞬时响应」与「合规最小化」的结果:翻译查询 QPS 远高于导出需求,把历史数据做成可分页 JSON,既减少前端渲染压力,也避免一次性返回大体积文件可能触发的 GDPR 数据出境问询。换句话说,官方把「导出」成本转嫁给浏览器,用户若有刚需,可自行拼链拉数据。
接口观察:数据长什么样
经验性观察:登录网页版fanyi.youdao.com后,每向下滚动一次,浏览器会请求https://dict.youdao.com/search/history?size=20&date=,返回体为
{ "data": [{ "sourceText": "hello", "targetText": "你好", "timestamp": 1707201234000, "sourceLang": "en", "targetLang": "zh" }] }
单次最多 20 条,时间戳为 Unix-13 位毫秒。只要循环递增date参数即可拉全量。
值得注意的是,date 字段在返回体里并非标准 ISO 格式,而是服务端剪裁后的「日级游标」,这意味着循环条件不必精准到秒,只需把上一次最后一条的 date 回传即可,天然避免「跳行」或「重复页」问题。
前置条件与版本差异
| 平台 | 最低版本 | 是否需登录 | 备注 |
|---|---|---|---|
| Windows 桌面 | 11.5.0 | 是 | 历史记录仅本地加密缓存,无接口,不适用 |
| macOS 桌面 | 11.5.0 | 是 | 同上,不适用 |
| iOS 客户端 | 11.5.1 | 是 | 记录存 App 沙盒,无导出,不适用 |
| Android 客户端 | 11.5.1 | 是 | 同上,不适用 |
| 网页版 | 2026-02 构建 | 是 | 接口公开,适用 |
警告:若你主要在桌面或手机端查词,需先在网页端同步一次账号,否则云端无数据。
同步策略是「最后写入优先」。只要在网页端产生过查询事件,服务端就会把该账号在其它端的记录合并,此后脚本才能拉到全量。若从未在网页端登录,接口会返回空数组,容易误判为脚本失效。
一次性导出:三步脚本法
Step 1 打开无痕窗口并登录
避免 Cookie 冲突,用 Chrome/Edge 无痕模式访问fanyi.youdao.com,扫码登录后按 F12 打开 DevTools。
Step 2 注入拉取脚本
在 Console 贴入以下代码(已做异常重试,经验性结论:约 2 万条需 3–4 分钟):
(async () => {
const size = 100; // 单次拉取,实测最大可 200
let date = ''; // 空串表示今天
let bucket = [];
while (true) {
const url = `https://dict.youdao.com/search/history?size=${size}&date=${date}`;
const res = await fetch(url, { credentials: 'include' });
const json = await res.json();
if (!json.data || json.data.length === 0) break;
bucket.push(...json.data);
date = json.data.at(-1).date; // 接口返回的游标
await new Promise(r => setTimeout(r, 200)); // 限速,防 429
}
console.table(bucket); // 先肉眼检查
window.historyJson = bucket; // 全局变量供下一步使用
})();
Step 3 生成并下载 Excel
继续在同一面板运行:
const XLSX = await import('https://unpkg.com/[email protected]/dist/xlsx.full.min.js?module');
const ws = XLSX.utils.json_to_sheet(window.historyJson.map(e => ({
时间: new Date(+e.timestamp).toLocaleString('zh-CN'),
原文: e.sourceText,
译文: e.targetText,
源语言: e.sourceLang,
目标语言: e.targetLang
})));
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'History');
XLSX.writeFile(wb, `youdao_history_${new Date().toISOString().slice(0,10)}.xlsx`);
下载文件默认落在“下载”目录,列宽已自适应,可直接用 Excel 2026 打开。
示例:如需增加「字符长度」列,只需在 map 函数里加 字符长度: e.sourceText.length,再运行即可,无需重新拉数据。
失败分支与回退方案
- 接口返回 401:Cookie 失效,刷新页面重新登录即可。
- 429 Too Many Requests:把
size改 50 并延长 sleep 至 500 ms。 - 数据缺行:经验性观察,凌晨 00:00–02:00 系统会压缩冷数据,可能出现 2–3 条空洞,可手动补拉当天。
- 脚本卡死:DevTools 右上角设置→Console→“Disable async stack traces”可提速约 30%。
若仍出现 502/504,大概率是网关限流,建议分片导出:先把 date 手动设为一周前,逐周回溯,再在 Excel 里拼接。
是否值得?三条判断标准
- 数量阈值:本地记录>500 条才值得跑脚本,低于 500 直接复制粘贴更快。
- 后续复用:若你需要每月做一次归档,可把脚本存为 Chrome Snippet,点两下即可重复。
- 合规要求:企业账号若启用“术语记忆库”,导出前需确认无敏感术语;脚本仅读取,不写库,风险低。
示例:高校语言实验室用脚本按月汇总 1.2 万条查询,生成词云做教学研究,全程零人工干预,比早前人工誊写节省 6 小时/月。
与第三方工具协同的最小权限原则
GitHub 上有开源项目声称可自动登录并每日同步到 Notion,但需明文存储账号密码。工作假设:一旦开启网易易盾二次验证,这类工具 72 小时内会被风控。建议仅使用本地脚本,Cookie 过期即失效,不额外申请 OAuth 权限。
若确实需要自动化,可在本地建 cron 任务调用 Chrome Headless,配合 --user-data-dir 复用已登录 Profile,全程无密码落盘,风险相对可控。
验证与观测方法
可复现步骤:① 在网页新翻译三句“test 1/2/3”;② 运行脚本;③ 检查 Excel 末三行时间戳与当前误差<1 分钟。若缺失,说明游标未对齐,可打印date变量调试。
进阶验证:用 Excel 的「条件格式」对 timestamp 做「重复值」染色,可一眼看出是否因翻页导致的重复拉取;出现重复则把 size 减小并加大 sleep。
适用/不适用场景清单
| 场景 | 是否推荐 | 原因 |
|---|---|---|
| 教师批量统计学生查词热度 | ✅ | 需量化数据,脚本最省人力 |
| 出境游离线包用户 | ❌ | 离线记录不上云,脚本拿不到 |
| 企业敏感合同翻译 | ⚠️ | 需先脱敏,建议内网私有化部署版 |
经验性观察:个人学习场景下,脚本几乎零风险;但用于医疗、金融等强监管行业时,即使只是读取,也应先通过内部合规评审,避免「数据出境」争议。
最佳实践 5 条
- 每月 1 日定时导出,文件名加年月,形成 git 仓库,diff 可追踪新词热度。
- Excel 新增“标签”列,用自动筛选给高频词打标,后续可批量导入 Anki。
- 若数据量>5 万行,建议先 CSV 落地,再 PowerQuery 清洗,避免浏览器内存溢出。
- 关闭脚本中的
console.table,可让速度再提 15%。 - 导出后立即清除本地 Cookie,降低账号异地登录风控。
补充:Git 仓库可用 LFS 管理大文件,避免 Excel 差异不可读;只提交 CSV 摘要,保留原始 xlsx 在本地,兼顾版本管理与隐私。
未来趋势与版本预期
有道内部员工在社区 AMA 曾透露,Q2 可能会在“个人中心-数据下载”加入 GDPR 式导出包(含历史记录、术语库、语音)。若上线,脚本法可退居二线,用于即时二次分析。建议现在就把字段映射存好,未来直接替换数据源即可,无需改后端代码。
此外,随着浏览器逐步限制第三方 Cookie,接口鉴权可能迁移到 Sec-Fetch-Site: same-origin + Token 模式,脚本需在 Header 里额外携带 Authorization: Bearer;保持关注 DevTools 的 307 重定向,即可第一时间适配。
常见问题
导出后的时间戳为何相差 8 小时?
接口返回的是 UTC+0 毫秒值,Excel 使用 toLocaleString('zh-CN') 会按系统时区转换,若电脑时区设置正确,应显示为本地时间;如不一致,请检查操作系统时区及「自动设置夏令时」选项。
脚本会违反有道用户协议吗?
目前协议未明确禁止「只读」级别的个人数据拉取;脚本未修改、删除或商用,仅模拟前端翻页行为,风险较低。但企业用户仍需遵守内部合规流程。
能否一次性导出语音记录?
历史接口仅返回文本与 timestamp,不含音频 URL;语音文件保存在另一 CDN 域,需额外鉴参且 24 小时内失效,目前无公开批量方案。
遇到 429 后减速仍被封 IP 怎么办?
可尝试切换网络(手机热点)或等待 6 小时后再拉;经验性观察,IP 级封禁通常在凌晨自动解除,并不影响账号本身。
导出文件能用 Google Sheets 打开吗?
xlsx 文件遵循 Office Open XML 标准,可直接上传 Google Drive 并用 Sheets 打开;若出现中文乱码,确认上传对话框选择「自动检测编码」即可。
总结:网页接口仍是 2026 年初最轻量、零成本的批量导出通道;掌握脚本后,2 万条记录 3 分钟落地 Excel,比人工复制快两个数量级,且不触碰 App 本地加密文件。只要注意限速与 Cookie 时效,就能在官方正式按钮到来前,提前实现「数据自由」。