# PyWeChatSpy **Repository Path**: Fragransing/PyWeChatSpy ## Basic Information - **Project Name**: PyWeChatSpy - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-16 - **Last Updated**: 2021-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PyWeChatSpy help people make better use of WeChatForPC 相关文章:[硬核WeChatBot](https://zhuanlan.zhihu.com/p/118674498) ## 支持微信版本 ### 3.0.0.57 微信客户端下载:[https://pan.baidu.com/s/1FIHQ4BCkpTSC-7QHk13LHw](https://pan.baidu.com/s/1FIHQ4BCkpTSC-7QHk13LHw) 提取码: v2n3 ## 功能列表 ### 基础功能 * 推送聊天消息 CHAT_MESSAGE * 回调结构 [ChatMessage](#ChatMessage) * 获取登录账号信息 get_account_details * 回调结构 [AccountDetails](#AccountDetails) * 发送文本 send_text * 入参 * wxid 文本消息接收方wxid * text 文本内容 * at_wxid 需要被@的wxid(仅限群聊) at几个人,文本里就需要出现几个'@'符号 `spy.send_text('xxxx@chatroom', '@0000 @1111 Hello World', 'wxid_xxxx,wxid_yyyy')` * 发送文件、图片 send_file * 入参 * wxid 文件接收方wxid * file_path 文件路径 * 解密微信图片文件 decrypt_image(微信的图片下载到本地是加密的,需要使用此方法解密后方能看到图片原始内容) * 入参 * source_file 带解密图片文件 * target_file 解密后图片保存路径 ### 高级功能 * 获取联系人列表 get_contacts(获取所有联系人,包括好友与群,不活跃的群可能无法获取) * 回调类型 CONTACTS_LIST * 回调结构 [Contacts](#Contacts) * 获取联系人详情、群成员列表 get_contact_details * 入参 * 联系人wxid * 回调类型 CONTACT_DETAILS * 回调结构 [Contacts](#Contacts) * 发送群公告 send_announcement * 入参 * wxid 群wxid * content 公告内容 * 自动通过好友请求 accept_new_contact * 入参 * encryptusername 好友请求Xml消息结构体同名字段值 * ticket 好友请求Xml消息结构体同名字段值 * 设置联系人备注 set_remark * 入参 * wxid 联系人wxid * remark 备注内容 * 分享群聊 share_chatroom * 入参 * chatroom_wxid 待分享群聊wxid * wxid 联系人wxid * 移除群成员 remove_chatroom_member * 入参 * chatroom_wxid 待移除成员群聊wxid * wxid 待移除群聊成员wxid * 移除联系人 remove_contact * 入参 * wxid 待移除联系人wxid * 发送小程序 send_mini_program * 入参 * wxid 接收方wxid * title 小程序标题 * image_path 小程序封面 * route 小程序跳转路由,抓包小程序消息获取pagepath或自行生成 * app_id 小程序AppId * username 小程序源Id * weappiconurl 小程序图标url * appname 小程序名称 * 发送链接卡片 send_link_card * 入参 * wxid 接收方wxid * title 卡片标题 * desc 卡片描述 * app_id 卡片AppId * url 卡片跳转url * image_path 卡片封面图片路径 * 创建群聊 create_chatroom * 入参 * wxid 创建群聊拉取的联系人wxid,不包括自己,至少连个,英文逗号分隔 * 回调结构 [CreateGroupCallback](#CreateGroupCallback) * 设置群名称 set_chatroom_name * 入参 * wxid 待改名群聊wxid * name 群聊名称 * 推送群成员详情 GROUP_MEMBER_DETAILS * 回调结构 [GroupMemberDetails](#GroupMemberDetails) * 推送群成员变动(进群&退群) GROUP_MEMBER_EVENT * 回调结构 [GroupMemberEvent](#GroupMemberEvent) * 获取登录二维码 get_login_qrcode * 回调结构 [LoginQRCode](#LoginQRCode) * 发送个人名片 send_card * 入参 * wxid 名片接收wxid * card_wxid 名片wxid * card_nickname 名片显示昵称 ## 数据结构 ### 登录信息 AccountDetails `account_details = spy_pb2.AccountDetails()` * wxid 登录账号wxid `account_details.wxid` * nickname 登录账号昵称 `account_details.nickname` * wechatid 登录账号微信号 `account_details.wechatid` * autograph 登录账号签名 `account_details.autograph` * profilePhotoHD 登录账号高清头像 `account_details.profilePhotoHD` * profilePhoto 登录账号头像 `account_details.profilePhoto` * phone 登录账号绑定手机号 `account_details.phone` * email 登录账号绑定邮箱 `account_details.email` * qq 登录账号绑定QQ `account_details.qq` * sex 登录账号性别 1男/2女 `account_details.sex` * city 登录账号所在城市 `account_details.city` * province 登录账号所在省份 `account_details.province` * country 登录账号所在国家 `account_details.country` ### Contacts 联系人列表 `contacts_list = spy_pb2.Contacts()` * contactDetails 联系人详情(可遍历) `for contact in contacts_list.contactDetails` * wxid 联系人wxid结构 `contact.wxid` * str 联系人wxid `contact.wxid.str` * nickname 联系人昵称结构 `contact.nickname` * str 联系人昵称 `contact.nickname.str` * sex 联系人性别 1男/2女 `contact.sex` * remark 联系人备注结构 `contact.remark` * str 联系人备注 `contact.remark.str` * wechatId 联系人微信号 `contact.wechatId` * groupOwnerWxid 群主wxid(如果联系人是群聊 wxid以"@chatroom"结尾) `cotact.groupOwnerWxid` * profilePhotoHD 联系人高清头像 `cotact.profilePhotoHD` * profilePhoto 联系人头像 `contact.profilePhoto` * groupMemberList 群成员列表(如果联系人是群聊 wxid以"@chatroom"结尾) `contact.groupMemberList` * memberCount 群成员数量 `contact.groupMemberList.memberCount` * groupMember 群成员信息(可遍历) `for member in contacts_list.contactDetails.groupMemberList.groupMember` * wxid 群成员wxid `member.wxid` * nickname 群成员昵称 `member.nickname` ### ChatMessage 微信消息 `chat_message = spy_pb2.ChatMessage()` * message 微信消息(可遍历) `for message in chat_message.message` * wxidFrom 消息发送方wxid结构 `message.wxidFrom` * str 消息发送方wxid `message.wxidFrom.str` * wxidTo 消息接收方wxid结构 `message.wxidTo` * str 消息接收方 `message.wxidTo.str` * type 消息类型 1文本3图片43视频49Xml37好友请求10000系统消息... `message.type` * content 消息内容结构 `message.content` * str 消息内容 `message.content.str` * timestamp 消息时间戳 `message.timestamp` * head 消息头 `message.head` * file 消息附带文件(图片、视频等) `message.file` ### GroupMemberDetails 群成员详情 `group_member_details = spy_pb2.GroupMemberDetails()` * wxid 群wxid `group_member_details.wxid` * detailsCount 详情数量(非群成员数量) `group_member_details.detailsCount` * groupMemberDetails 群成员详情(可遍历) `for member_details in group_member_details.groupMemberDetails` * wxid 群成员wxid `member_details.wxid` * nickname 群成员昵称 `member_details.nickname` * groupNickname 群成员群内昵称 `member_details.groupNickname` * profilePhotoHD 群成员高清头像 `member_details.profilePhotoHD` * profilePhoto 群成员头像 `member_details.profilePhoto` * inviterWxid 群成员邀请人wxid `member_details.inviterWxid` ### GroupMemberEvent 群成员变动事件 `group_member_event = spy_pb2.GroupMemberEvent()` * wxid 群wxid `group_member_event.wxid` * wxidJoin 进群wxid(可遍历) `for _join in group_member_event.wxidJoin` * wxidLeave 退群wxid(可遍历) `for _leave in group_member_event.wxidLeave` ### CreateGroupCallback 创建群聊回调 `callback = spy_pb2.CreateGroupCallback()` * wxid 群聊wxid结构 `callback.wxid` * str 群聊wxid `callback.wxid.str` ### LoginQRCode 登录二维码 `qrcode = spy_pb2.LoginQRCode()` * qrcodeSize 二维码大小 `qrcode.qrcodeSize` * qrcodeBytes 二维码数据 `qrcode.qrcodeBytes` ## 例子 ### 一、本地运行 示例代码见[example.py](https://github.com/veikai/PyWeChatSpy/blob/master/example.py) ### 二、HTTP调用服务端 示例代码见 [service_example.py](https://github.com/veikai/PyWeChatSpy/blob/master/service_example.py) 和 [client_example.py](https://github.com/veikai/PyWeChatSpy/blob/master/client_example.py) ### 三、远程过程调用(RPC) 起作用的有4个额外文件: * example_rpc_server.py * example_rpc_client.py * rpc_server_tools.py * rpc_client_tools.py 使用方法: 1. 运行服务端 [example_rpc_server.py](https://github.com/veikai/PyWeChatSpy/blob/master/example_rpc_server.py) 启动微信 2. 运行客户端 [example_rpc_client.py](https://github.com/veikai/PyWeChatSpy/blob/master/example_rpc_client.py) 接收并处理消息 *注意:例子中,客户端和服务端在一台机子上,所以监听的ip是127.0.0.1,如果将客户端放到其他机器,请填写实际服务端对应的ip,出现端口冲突的话也可以灵活更改端口,并配置对应服务器防火墙放行* ### 四、其他例子 __待补充,欢迎大家贡献!__