这几天乱逛,捡到一个接口,这个接口存在一个bug,能够返回已经撤回的消息或者因为各种原因而导致无法查看的消息,如图:
https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs
请求方式:GET
认证方式:Cookie(SESSDATA)
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 | ||
sender_device_id | num | 发送者设备 | 可选 | 1 | ||
talker_id | num | 聊天对象的UID | 必要 | |||
session_type | num | 聊天对象的类型 | 必要 | 1为用户,2为粉丝团 | ||
size | num | 列出消息条数 | 可选 | 默认是20 | ||
build | num | 未知 | 可选 | 默认是0 | ||
mobi_app | str | 设备 | 可选 | web |
实例:
获取与目标用户uid为123的私信记录:
https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs?sender_device_id=1&talker_id=123&session_type=1&size=20&build=0&mobi_app=web
获取与粉丝团id为234的私信记录:
https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs?sender_device_id=1&talker_id=234&session_type=2&size=20&build=0&mobi_app=web
附:真正的加密通话
但是通过本api可以让不可见的消息内容显现
因为这几天突然有老哥翻出远古项目来问,所以更新一下,这个api最多仅仅返回200条数据,那剩下超出的该怎么办?通过刷新页面你能看到:实际上这个api还有begin_seqno与end_seqno参数来检测是否有新的消息已做到实时更新,因此我们可以利用end_seqno等于最早一条消息的时间,反复循环来做到读取以前所有的历史记录
具体的api调用相关,已经提交到了 哔哩哔哩-API收集整理
如有疑问请评论,转载请标明出处