一、协议本质与演进历程
**
企业微信 iPad 协议并非独立设计的全新协议,而是企业微信移动端协议在 iPadOS 上的适配实现,核心目标是解决平板设备的移动办公需求(如审批展示、消息同步),其演进可分为两个阶段:
早期阶段:采用封闭二进制协议,基于 TLV(Type-Length-Value)格式封装,通过 TCP 长连接实现消息推送,加密方式为 ECDH+ChaCha20,仅支持设备级私有接入;
当前阶段:转向 "轻量接口层",复用网页端公开 REST 接口,通过标准 HTTPS 协议通信,支持 OAuth2.0 令牌机制,无需私有字段即可实现核心功能,兼顾合规性与扩展性。
二、核心技术架构
-
通信模式
模式类型
适用场景
技术特点
标准 HTTPS 接口
内部系统集成、轻量需求
复用网页端 API,无需额外 SDK,开发成本低
TCP 长连接(私有)
高频消息同步、实时推送
基于自定义帧结构,支持增量同步,延迟更低
-
关键技术组件
会话鉴权:核心凭证为wwrtx.sid(会话 ID)与wwrtx.logined(登录状态标识),登录网页版后由响应头返回,有效期 24 小时,携带在 Cookie 中即可获得 PC 级接口权限;
数据格式:公开接口采用 JSON 格式,核心字段简化(如发送消息仅需tousername/content/msgtype);私有协议采用 24 字节定长头 + TLV 嵌套结构,压缩效率更高;
加密机制:公开接口使用 RSA+AES 加密;私有协议采用 ECDH 密钥协商 + ChaCha20 流加密,服务器仅做中继,无法解密明文;
登录态管理:当前推荐 OAuth2.0 模式,access_token有效期 2 小时,刷新令牌有效期 7 天,替代早期 "一机一密" 的硬编码方式。
-
核心接口示例(公开 HTTPS 方式)
发送文本消息(Python 实现):
import requests, os
从环境变量获取会话凭证(登录后获取wwrtx.sid)
sid = os.getenv("WX_SID")
url = "https://work.weixin.qq.com/wework_admin/message/send"
核心请求体(仅3个必要字段)
body = {
"tousername": "接收人账号(如zhangsan)",
"content": "审批已通过,请查阅",
"msgtype": 1 # 1表示文本消息
}
携带会话凭证发送请求
response = requests.post(
url,
json=body,
cookies={"wwrtx.sid": sid},
headers={"X-Client-Src": "ios"} # 优化大屏字段返回顺序
)
响应判断:errcode=0表示成功
print(f"发送结果:{'成功' if response.json().get('errcode') == 0 else '失败'}")
三、合规接入指南(推荐方案)
- 接入流程(无需私有协议)
会话建立:iPad 端通过 Safari 登录企业微信网页版,获取 Cookie 中的wwrtx.sid与wwrtx.logined;
请求配置:
UA 建议设置为:Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15;
额外添加 Header:X-Requested-With: wxwork(避免重定向到手机端)、X-Client-Src: ios(优化返回格式);
功能实现:支持消息收发、通讯录查询、审批推送等核心功能,接口路径与 PC 网页版一致(如消息发送路径/wework_admin/message/send);
异常处理:
频率控制:单会话默认 30 次 / 分钟,超限返回errcode=48002,建议本地计数器控制在 28 次 / 分钟,超限休眠 2 秒;
服务维护:返回errcode=50003时,将消息写入本地队列,30 秒后重试,三次失败转人工处理。 - 禁忌与风险提示
禁止逆向私有二进制协议、破解设备指纹校验(如伪造 iPad 硬件信息),此类操作违反企业微信服务条款,可能导致账号封禁;
禁止中间人解密 HTTPS 链路,需保留官方根证书透传,确保 TLS 校验通过;
不建议使用私有 TCP 长连接方式,其接口未公开,版本升级易导致兼容问题,且存在合规风险。
四、与其他端协议的差异
对比维度
iPad 协议(公开方式)
PC 网页版协议
手机端协议
核心凭证
wwrtx.sid
wwrtx.sid
access_token
通信协议
HTTPS
HTTPS/WebSocket
HTTPS/TCP 长连接
接入成本
低(复用网页接口)
中(需处理 WebSocket)
高(需适配移动端 SDK)
功能覆盖
消息 / 审批 / 通讯录
全功能支持
全功能支持
频率限制
30 次 / 分钟 / 会话
60 次 / 分钟 / 会话
60 次 / 分钟 / 会话