DeepSeek-Web2API 是一个基于 Playwright 和 FastAPI 的非官方工具,它通过模拟用户在浏览器中的操作,将 DeepSeek 网页版 (chat.deepseek.com) 封装为标准的 HTTP API 接口。
核心特性:
- 无需申请官方 API Key,直接使用网页版账号(支持免费额度)。
- 可见即所得:只要网页能看到的对话内容,API 均可导出。
- 支持 新建对话 和 继续历史对话。
- 支持 持久化登录,无需每次重启服务都扫码。
- 提供无头模式(Headless),适合部署在服务器后台运行。
使用本项目前请务必阅读:
- 本项目仅供 Python 技术研究与学习(Web 自动化测试方向) 使用。
- 严禁用于任何商业用途、大规模并发请求或恶意攻击 DeepSeek 服务器。
- 本项目与 DeepSeek (深度求索) 官方无任何关联。
- 使用本工具可能违反 DeepSeek 的服务条款,导致您的 IP 被限制 或 账号被封禁。
- 作者不对因使用本工具而产生的任何损失负责。
将代码保存为 deepseek.py (或其他你喜欢的名字)。
确保你的环境中安装了 Python 3.8+,然后安装所需的 Python 库:
pip install playwright fastapi uvicorn pydanticPlaywright 需要下载对应的 Chromium 内核:
playwright install chromium首次使用需要手动登录以保存会话信息 (Cookie/Token)。运行以下命令,会弹出一个浏览器窗口:
python deepseek.py --login操作说明:
- 在弹出的浏览器中,输入手机号/验证码完成登录。
- 确认能够看到聊天主界面。
- 回到终端按 Enter (回车) 键结束。
- 登录凭据会自动保存到
./user_data目录。
登录成功后,启动无头 API 服务器:
python deepseek.py --serve --host 127.0.0.1 --port 8080服务启动后,默认监听 http://127.0.0.1:8080。
POST /send
核心接口。用于发送 Prompt 并获取 AI 回复。
Request Body (JSON):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
prompt |
string | 是 | 你要发送的问题内容 |
new_chat |
boolean | 否 | 是否开启新对话 (默认 false) |
conversation_url |
string | 否 | 历史对话的 URL (如 /chat/abc...),用于继续聊天 |
wait_timeout_sec |
int | 否 | 等待 AI 回复的最大超时秒数 (默认 120) |
示例 1:开启新对话
{
"prompt": "帮我写一个 Python Hello World",
"new_chat": true
}示例 2:继续特定对话
{
"prompt": "详细解释一下上面的代码",
"conversation_url": "/chat/8a7b... (你的对话ID)"
}Response: 返回包含完整对话记录的 JSON 对象。
GET /conversations
获取侧边栏的历史对话列表。
Parameters:
limit: (可选) 返回数量,默认 20。
Example:
GET http://127.0.0.1:8080/conversations?limit=10
GET /conversation
获取指定对话页面的所有历史消息。
Parameters:
url: (必填) 对话的相对路径,例如/chat/xxxxx。
Example:
GET http://127.0.0.1:8080/conversation?url=/chat/your-chat-id
你可以通过修改代码顶部的变量或设置环境变量来调整配置:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
DEEPSEEK_BASE_URL |
https://chat.deepseek.com/ |
目标网址 |
DEEPSEEK_USER_DATA |
./user_data |
Chrome 用户数据存储路径 (Cookies) |
代码内的可调参数:
HEADLESS_DEFAULT: 是否默认无头模式 (默认True)REQUEST_TIMEOUT: 页面加载超时时间 (ms)MAX_MESSAGE_LEN: 抓取消息的最大长度
Q: 报错 Playwright 未启动 或 RuntimeError?
A: 请确保你先运行了 --login 成功生成了 user_data 文件夹。
Q: 为什么响应速度比官方 API 慢? A: 因为这是通过模拟浏览器操作,需要等待网页加载、渲染以及模拟打字效果,速度受限于你的网络和 DeepSeek 网页前端的响应速度。
Q: 遇到验证码 (Cloudflare) 怎么办? A: 如果频繁出现验证码,说明请求频率过高。建议:
- 降低请求频率。
- 重新运行
--login手动过一次验证码。 - 检查你的 IP 是否被风控。
本项目基于 MIT License 开源。这意味着你可以自由地使用、修改和分发代码,但作者不承担任何责任。