Skip to content

luotron/batchat-python-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Batchat Python Client

一个用于与蝙蝠聊天(Batchat)API交互的Python客户端,实现了SRP(Secure Remote Password)认证协议。

项目简介

这个项目提供了一个Python客户端,用于与蝙蝠聊天(Batchat)的API进行交互。它实现了完整的SRP认证流程,包括登录、Token管理、群组和成员信息查询等功能。

功能特性

  • SRP认证:实现了完整的SRP-6a协议,确保安全的远程密码认证
  • 自动登录:支持Token持久化和自动续期
  • 群组管理:查询群组列表和群成员信息
  • 配置管理:支持配置文件保存登录状态
  • 错误处理:完善的错误处理和重试机制
  • Socket通信:支持通过Socket进行用户登录查询

项目结构

batchat/
├── BatClient.py      # 主客户端类,包含所有API调用逻辑
├── SRP.py           # SRP客户端实现,处理加密认证
├── config.json      # 配置文件(存储登录凭据和Token)
├── README.md        # 项目说明文档
└── .gitignore       # Git忽略文件

快速开始

环境要求

  • Python 3.7+
  • 依赖包:
    • requests
    • blackboxprotobuf

安装依赖

pip install requests blackboxprotobuf

基本使用

  1. 初始化客户端
from BatClient import BatClient

# 使用配置文件初始化
client = BatClient(
    xid="你的xid",
    pwd="你的密码",
    imei="设备IMEI",
    config_file="config.json"
)
  1. 登录并获取Token
# 自动登录(如果Token过期会自动重新登录)
credentials = client.login()
if credentials:
    print(f"登录成功!UID: {credentials['uid']}")
  1. 查询群组列表
groups = client.groupListQuery()
print(f"群组数据: {groups}")
  1. 查询群成员
group_id = 12345678  # 替换为实际的群ID
members = client.groupMemberListQuery(group_id)
print(f"群成员: {members}")

配置文件说明

配置文件 config.json 存储登录状态:

{
  "token": "登录Token",
  "uid": "用户ID",
  "login_time": 登录时间戳,
  "xid": "用户xid",
  "imei": "设备标识",
  "pwd": "密码"
}

注意:密码在配置文件中以明文存储,建议在实际使用中加密存储。

API文档

BatClient类

初始化参数

参数 类型 说明 必填
xid str 用户xid
pwd str 用户密码
imei str 设备IMEI
config_file str 配置文件路径 否(默认:"batclient_config.json")

主要方法

  • login(): 执行登录流程,返回Token和UID
  • groupListQuery(): 查询用户所在的群组列表
  • groupMemberListQuery(group_id): 查询指定群组的成员列表
  • send_request(endpoint, pb_data_hex): 发送原始Protobuf请求

SRPClient类

实现了SRP-6a协议的客户端部分,用于安全的密码认证。

技术细节

SRP认证流程

  1. 用户Srp1查询:客户端发送公钥A,服务器返回盐值s、服务器公钥B等
  2. 计算会话密钥:客户端使用SRP算法计算会话密钥S
  3. 登录签名查询:客户端发送计算出的M1值进行验证
  4. 用户登录查询:通过Socket连接获取最终的登录Token

协议实现

  • 使用Protobuf进行数据序列化
  • 支持HTTP和Socket两种通信方式
  • 实现了完整的错误处理和重试机制
  • 支持Token自动续期

注意事项

  1. 安全性:配置文件中的密码以明文存储,建议在生产环境中加密存储
  2. Token有效期:Token默认有效期为7天,过期后需要重新登录
  3. 设备标识:IMEI是设备唯一标识,需要从抓包数据中获取
  4. API变更:API接口可能随时变更,需要根据实际情况调整

开发指南

添加新API

  1. BatClient类中添加新的方法
  2. 构建对应的Protobuf数据结构
  3. 使用send_request方法发送请求
  4. 处理响应数据

调试技巧

  • 启用详细日志输出
  • 使用抓包工具(如Charles、Fiddler)分析网络请求
  • 参考BatClient.py中的示例代码

贡献指南

欢迎提交Issue和Pull Request!

  1. Fork本仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启Pull Request

许可证

本项目采用MIT许可证。详见 LICENSE 文件。

联系方式

如果你对这个项目感兴趣,想要进行技术交流,欢迎联系我:

  • 微信: __int64
  • QQ: 1415662711
  • GitHub: luotron

期待与各位开发者交流学习!


免责声明:本项目仅供学习和研究使用,请勿用于非法用途。使用本项目产生的任何后果由使用者自行承担。

About

一个用于与蝙蝠聊天(Batchat)API交互的Python客户端,实现了SRP(Secure Remote Password)认证协议。

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages