python:如何将豆包AI中历史对话 备份到本地 backup目录下?

想要将豆包AI中的历史对话备份到本地硬盘的 backup 目录下,以下提供几种可行的方法,从简单的手动导出到自动化脚本方案。

方法一:手动导出(最简单,无需编程)

这是官方支持的方式,安全且稳定,适合非技术用户:

  1. 打开豆包网页端(https://www.doubao.com)并登录
  2. 点击左下角用户名 → 选择「设置」→「数据管理」
  3. 找到「导出对话记录」选项,选择导出格式(JSON/CSV)
  4. 下载后手动移动到本地 backup 目录

方法二:自动化脚本(Python)

以下脚本通过模拟网页操作实现自动备份(需安装必要依赖),适用于有编程基础的用户:

前置条件
bash 复制代码
# 安装依赖库
pip install selenium==4.15.2 requests python-dotenv
完整备份脚本
python 复制代码
# -*- coding: utf-8 -*-
import os
import json
import time
import requests
from datetime import datetime
from dotenv import load_dotenv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 加载环境变量(建议将敏感信息存放在.env文件)
load_dotenv()

# 配置项
BACKUP_DIR = "./backup"  # 本地备份目录
DOUBAO_COOKIE = os.getenv("DOUBAO_COOKIE")  # 从浏览器获取的豆包cookie
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

def init_backup_dir():
    """初始化备份目录"""
    if not os.path.exists(BACKUP_DIR):
        os.makedirs(BACKUP_DIR)
        print(f"创建备份目录: {BACKUP_DIR}")

def get_conversations():
    """获取对话列表(核心接口)"""
    headers = {
        "Cookie": DOUBAO_COOKIE,
        "User-Agent": USER_AGENT,
        "Referer": "https://www.doubao.com",
        "Content-Type": "application/json"
    }
    
    # 豆包对话列表接口(需根据实际接口调整)
    url = "https://www.doubao.com/api/v1/conversations"
    
    try:
        response = requests.get(url, headers=headers, timeout=30)
        response.raise_for_status()
        return response.json()
    except Exception as e:
        print(f"获取对话列表失败: {e}")
        return None

def backup_conversation(conversation_id, title):
    """备份单条对话"""
    headers = {
        "Cookie": DOUBAO_COOKIE,
        "User-Agent": USER_AGENT
    }
    
    url = f"https://www.doubao.com/api/v1/conversations/{conversation_id}/messages"
    
    try:
        response = requests.get(url, headers=headers, timeout=30)
        response.raise_for_status()
        messages = response.json()
        
        # 生成备份文件名
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        safe_title = "".join(c for c in title if c.isalnum() or c in (' ', '-', '_')).strip()
        filename = f"{safe_title}_{conversation_id}_{timestamp}.json"
        filepath = os.path.join(BACKUP_DIR, filename)
        
        # 保存到本地
        with open(filepath, "w", encoding="utf-8") as f:
            json.dump(messages, f, ensure_ascii=False, indent=2)
        
        print(f"成功备份: {filename}")
        return True
    except Exception as e:
        print(f"备份对话 {conversation_id} 失败: {e}")
        return False

def main():
    """主函数"""
    init_backup_dir()
    
    # 获取所有对话
    conversations = get_conversations()
    if not conversations:
        print("未获取到对话数据")
        return
    
    # 遍历备份
    success_count = 0
    total_count = len(conversations)
    
    for conv in conversations:
        conv_id = conv.get("id")
        conv_title = conv.get("title", f"未命名对话_{conv_id}")
        
        if backup_conversation(conv_id, conv_title):
            success_count += 1
        time.sleep(1)  # 避免请求过快
    
    print(f"\n备份完成!成功: {success_count}/{total_count}")
    print(f"备份文件已保存至: {os.path.abspath(BACKUP_DIR)}")

if __name__ == "__main__":
    main()
使用说明
  1. 获取Cookie

    • 打开豆包网页端,按F12打开开发者工具
    • 切换到Network标签,刷新页面
    • 找到任意请求,复制Request Headers中的Cookie值
    • 创建.env文件,添加:DOUBAO_COOKIE=你的cookie值
  2. 运行脚本

    bash 复制代码
    python doubao_backup.py

方法三:Selenium全自动备份(模拟人工操作)

如果API接口有变化,可使用浏览器自动化:

python 复制代码
# -*- coding: utf-8 -*-
import os
import time
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

BACKUP_DIR = "./backup"

def init_driver():
    """初始化浏览器驱动"""
    options = webdriver.ChromeOptions()
    options.add_argument("--headless")  # 无头模式(不显示浏览器窗口)
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    driver = webdriver.Chrome(options=options)
    return driver

def login(driver):
    """登录豆包(需要手动扫码)"""
    driver.get("https://www.doubao.com")
    print("请在30秒内完成扫码登录...")
    time.sleep(30)
    return driver.current_url == "https://www.doubao.com/chat"

def export_conversations(driver):
    """导出对话"""
    # 点击头像
    avatar = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "avatar"))
    )
    avatar.click()
    
    # 点击设置
    settings = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//span[text()='设置']"))
    )
    settings.click()
    
    # 点击导出
    export_btn = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//button[text()='导出对话记录']"))
    )
    export_btn.click()
    
    # 等待下载完成
    time.sleep(10)
    
    # 移动下载文件到backup目录
    download_dir = os.path.expanduser("~/Downloads")
    for file in os.listdir(download_dir):
        if "豆包对话记录" in file and file.endswith((".json", ".csv")):
            src = os.path.join(download_dir, file)
            dst = os.path.join(BACKUP_DIR, f"{datetime.now().strftime('%Y%m%d_%H%M%S')}_{file}")
            os.rename(src, dst)
            print(f"备份完成: {dst}")

def main():
    if not os.path.exists(BACKUP_DIR):
        os.makedirs(BACKUP_DIR)
    
    driver = init_driver()
    try:
        if login(driver):
            export_conversations(driver)
        else:
            print("登录失败")
    finally:
        driver.quit()

if __name__ == "__main__":
    main()

重要提醒

  1. Cookie有有效期,过期后需要重新获取
  2. 请勿频繁请求API,避免账号受限
  3. 建议将脚本加入定时任务(Windows任务计划程序/Linux crontab)实现自动备份
  4. 优先使用官方导出功能,脚本方案仅作学习参考

总结

  1. 新手推荐:使用方法一(手动导出),简单安全且无需编程基础
  2. 自动化需求:使用方法二(API备份),效率高但需要获取Cookie
  3. 兼容性优先:使用方法三(Selenium),模拟人工操作更稳定但需要安装浏览器驱动
  4. 所有备份文件都会保存在本地backup目录,建议定期检查备份是否成功
相关推荐
qq_199886877 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
basketball6167 小时前
Python FastAPI 介绍以及常用方法
python·fastapi·vllm·ai infra
ting94520007 小时前
深度拆解Enter Pro AI原生开发平台:从底层架构到企业级落地技术实践
人工智能·架构·ai-native
lisw057 小时前
人工智能辅助科学的快与慢!
人工智能
9呀8 小时前
vscode如何打开多个codex标签页
人工智能
todoitbo8 小时前
本地图库语义搜索实战:接上蓝耘元生代,让“傍晚的海边“能搜到图
人工智能·ai·api·工具实战
论文复现现场8 小时前
企业知识库 RAG 用什么模型便宜?GLM-5.3-Flash 长文本 API 实测
python·rag·企业知识库·大模型api·glm-5.3-flash
羊羊小栈8 小时前
基于「YOLO目标检测 + 多模态AI分析」的水稻病害智能检测分析预警系统(LangChain框架)
人工智能·yolo·目标检测·毕业设计·创业创新·大作业
IT_陈寒8 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
lisw058 小时前
提升社会科学领域的计算可重复性
人工智能·数字时代