这不是飞书官方 SDK。内部接口随时可能变化,只在学习、测试或你有授权的环境里用。
- 认证与基础:读取登录 Cookie、获取 CSRF token、获取当前用户信息
- 消息发送:发文本消息、创建单聊会话、搜索用户或群组
- 电话加急:封装
cmd=30000,对指定消息发起电话加急 - 消息接收:WebSocket 实时接收消息并发送 ACK
- 单发工具:
single_send按多个chat_id发送不同内容 - 邮件工具:
single_send/send_email.pySMTP 发送 HTML 邮件和附件
- Python 3.7+
- Node.js 18+(
PyExecJS需要调用static/fly_book.js)
requirements.txt 只保留主项目实际用到的依赖,避免 protobuf 版本冲突。
.
├── FlyBookApi.py # HTTP API 封装
├── FlyBookAutoAsync.py # async WebSocket 收消息入口
├── FlyBookAuto.py # websocket-client 版本收消息入口
├── FlyBookRec.py # 只接收并 ACK 的示例
├── builder/ # 请求头、参数、protobuf 构造和解析
├── static/ # protobuf 定义和 JS 签名/ID 生成
├── tools/ # 命令行工具
├── utils/ # Cookie 转换和 JS 调用
└── single_send/ # 单发消息和 SMTP 邮件脚本
pip install -r requirements.txt只用 single_send 的话:
pip install -r single_send/requirements.txt登录飞书 Web,从浏览器请求里复制 Cookie,设置环境变量:
# Bash
export FEISHU_COOKIE="YOUR_FEISHU_COOKIE"
# PowerShell
$env:FEISHU_COOKIE = "YOUR_FEISHU_COOKIE"不要把真实 Cookie、请求包、二维码、账号密码提交到仓库。
验证当前登录用户:
python FlyBookApi.py接收消息:
python FlyBookAutoAsync.py # 异步,推荐
python FlyBookAuto.py # 同步
python FlyBookRec.py # 只接收并 ACK搜索用户或群:
export FEISHU_COOKIE="YOUR_FEISHU_COOKIE"
export FEISHU_SEARCH_QUERY="用户名或群名"
python FlyBookApi.py需要提供目标消息的 message_id 和发送者的 from_id(要和 Cookie 对应的用户匹配)。
Python 调用:
from FlyBookApi import FlyBookApi, build_auth_from_env
auth = build_auth_from_env()
api = FlyBookApi()
resp = api.send_urgent_msg(
auth,
message_id="7597118448812018914",
from_id="7379517647972433921",
origin="https://your-tenant.feishu.cn",
referer="https://your-tenant.feishu.cn/",
)
print(resp.hex())命令行:
python tools/send_cmd30000.py \
--message-id 7597118448812018914 \
--from-id 7379517647972433921 \
--origin https://your-tenant.feishu.cn \
--referer https://your-tenant.feishu.cn/也可以用本地 Cookie 文件:
python tools/send_cmd30000.py \
--message-id 7597118448812018914 \
--from-id 7379517647972433921 \
--cookie-file cookie.txt返回 protobuf 二进制,默认打印 hex。常见失败原因:Cookie 过期、from_id 不匹配、message_id 不存在或没权限、租户域名不对。
cp single_send/message_config.example.json single_send/message_config.json
# 编辑填入 Cookie、chat_id 和消息内容
cd single_send
python send_message.py邮件同理:
cp single_send/email_config.example.json single_send/email_config.json
python send_email.py --config email_config.json建议用 smtp_password_env 从环境变量读 SMTP 密码。
docker build -t open-feishu-apis .
docker run -it --rm -e FEISHU_COOKIE="YOUR_FEISHU_COOKIE" open-feishu-apis bash新增功能:
- 电话加急:
FlyBookApi.send_urgent_msg()/send_urgent_msg_response(),命令行工具tools/send_cmd30000.py single_send单发工具,按多个chat_id发不同内容- SMTP 邮件脚本
single_send/send_email.py,支持 HTML 正文、抄送、密送和附件
工程优化:
- 移除源码硬编码 Cookie,改为环境变量或本地文件读取
- 新增
utils.fly_book_utils.load_cookie_str()复用 Cookie 加载逻辑 - Cookie 解析兼容
a=1;b=2和a=1; b=2两种格式 - 修复
FlyBookAutoAsync.py全局auth问题,改为self.auth - 清理
__pycache__/.pyc,更新.gitignore - 移除与
protobuf==5.28.3冲突的blackboxprotobuf==1.0.1 - 补充
websockets、PyExecJS依赖 - Dockerfile 显式安装 Node.js/npm
新增文档:
cmd30000.md— 电话加急的项目内调用方式cmd30000_raw_call.md— 手工构造cmd=30000请求single_send/README.md— 多目标单发和邮件脚本用法- 示例配置文件,避免真实信息入库
- Cookie 等于登录态,注意保管
- 部分请求保留了
verify=False复现原始抓包行为,生产环境别关 TLS 校验 - 飞书内部接口不是稳定公开协议,字段、命令号、签名、protobuf 结构都可能变
- Cookie 失效就重新登录,更新环境变量或配置文件