package com.example.client; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.SneakyThrows; import org.jsoup.Connection; import org.jsoup.Jsoup; import java.util.HashMap; import java.util.Map; /** * @PACKAGE_NAME: com.example.client * @NAME: WeChatHookClient * @AUTHOR: wxs * @DATE: 2023/5/31 15:08 * @PROJECT_NAME: WeChatHook-java **/ public class WeChatHookClient { private static final String apiPath = "http://127.0.0.1:19088/api/"; public static void main(String[] args) { System.out.println(check_login()); } /** * 检查是否登录 * * @return */ public static JSONObject check_login() { String url = apiPath + "?type=0"; JSONObject response = post(url, null); return response; } /** * 登录用户信息 * * @return */ public static JSONObject user_info() { String url = apiPath + "?type=8"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 发送文本 * * @param wxid * @param msg * @return */ public static JSONObject send_text(String wxid, String msg) { String url = apiPath + "?type=2"; Map map = new HashMap<>(); map.put("wxid", wxid); map.put("msg", msg); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 发送@消息 * * @param chatRoomId * @param wxids notify@all * @param msg * @return */ public static JSONObject send_at(String chatRoomId, String wxids, String msg) { String url = apiPath + "?type=3"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("wxids", wxids); map.put("msg", msg); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 发送图片 * * @param wxid * @param imagePath C:/Users/ww/Downloads/素材图片 (4).jpg * @return */ public static JSONObject send_img(String wxid, String imagePath) { String url = apiPath + "?type=5"; Map map = new HashMap<>(); map.put("wxid", wxid); map.put("imagePath", imagePath); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 发送文件 * * @param wxid * @param filePath C:/test.txt * @return */ public static JSONObject send_file(String wxid, String filePath) { String url = apiPath + "?type=6"; Map map = new HashMap<>(); map.put("wxid", wxid); map.put("filePath", filePath); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * hook 消息 * * @param ip * @param port * @return */ public static JSONObject hook_msg(String ip, String port) { String url = apiPath + "?type=9"; Map map = new HashMap<>(); map.put("ip", ip); map.put("port", port); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 取消消息hook * * @return */ public static JSONObject unhook_msg() { String url = apiPath + "?type=10"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * hook 图片 * * @return */ public static JSONObject hook_img(String imgDir) { String url = apiPath + "?type=11"; Map map = new HashMap<>(); map.put("imgDir", imgDir); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 取消hook 图片 * * @param imgDir C:\img * @return */ public static JSONObject unhook_img(String imgDir) { String url = apiPath + "?type=12"; Map map = new HashMap<>(); map.put("imgDir", imgDir); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * hook 语音 * * @return */ public static JSONObject hook_voice(Long msgId) { String url = apiPath + "?type=56"; Map map = new HashMap<>(); map.put("msgId", msgId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 取消hook 语音 * * @return */ public static JSONObject unhook_voice() { String url = apiPath + "?type=14"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 删除好友 * * @param wxid * @return */ public static JSONObject del_friend(String wxid) { String url = apiPath + "?type=17"; Map map = new HashMap<>(); map.put("wxid", wxid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 网络搜素用户 * * @return */ public static JSONObject search_friend(String keyword) { String url = apiPath + "?type=19"; Map map = new HashMap<>(); map.put("keyword", keyword); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 添加好友 * * @param wxid * @return */ public static JSONObject add_friend(String wxid) { String url = apiPath + "?type=20"; Map map = new HashMap<>(); map.put("wxid", wxid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 群成员 * * @param chatRoomId * @return */ public static JSONObject fetch_chat_room_members(String chatRoomId) { String url = apiPath + "?type=25"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 群成员昵称 * * @param chatRoomId * @param memberId * @return */ public static JSONObject get_member_nickname(String chatRoomId, String memberId) { String url = apiPath + "?type=26"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("memberId", memberId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 删除群成员 * * @param chatRoomId * @param memberIds * @return */ public static JSONObject del_member(String chatRoomId, String memberIds) { String url = apiPath + "?type=27"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("memberIds", memberIds); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 增加群成员 * * @param chatRoomId * @param memberIds * @return */ public static JSONObject add_member(String chatRoomId, String memberIds) { String url = apiPath + "?type=28"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("memberIds", memberIds); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 修改群昵称 * * @param chatRoomId * @param wxid * @param nickName * @return */ public static JSONObject modify_room_name(String chatRoomId, String wxid, String nickName) { String url = apiPath + "?type=31"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("wxid", wxid); map.put("nickName", nickName); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 获取sqlite3的操作句柄 * * @return */ public static JSONObject get_db_handlers() { String url = apiPath + "?type=32"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 查询数据库 * * @param dbHandle * @param sql * @return */ public static JSONObject query_db_by_sql(String dbHandle, String sql) { String url = apiPath + "?type=34"; Map map = new HashMap<>(); map.put("dbHandle", dbHandle); map.put("sql", sql); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * hook 日志 * * @return */ public static JSONObject hook_log() { String url = apiPath + "?type=36"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 取消hook日志 * * @return */ public static JSONObject unhook_log() { String url = apiPath + "?type=37"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 转发消息 * * @param wxid * @param msgid * @return */ public static JSONObject forward(String wxid, String msgid) { String url = apiPath + "?type=40"; Map map = new HashMap<>(); map.put("wxid", wxid); map.put("msgid", msgid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 退出登录 * * @return */ public static JSONObject logout() { String url = apiPath + "?type=44"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 确认收款 * * @param wxid * @param transcationId * @param transferId * @return */ public static JSONObject confirm_receipt(String wxid, String transcationId, String transferId) { String url = apiPath + "?type=45"; Map map = new HashMap<>(); map.put("wxid", wxid); map.put("transcationId", transcationId); map.put("transferId", transferId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 好友列表 * * @return */ public static JSONObject contact_list() { String url = apiPath + "?type=46"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 群详情 * * @param chatRoomId * @return */ public static JSONObject room_detail(String chatRoomId) { String url = apiPath + "?type=47"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * ocr提取文字 * * @param imagePath * @return */ public static JSONObject ocr(String imagePath) { String url = apiPath + "?type=49"; Map map = new HashMap<>(); map.put("imagePath", imagePath); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 拍一拍 * * @param chatRoomId * @param wxid * @return */ public static JSONObject pat(String chatRoomId, String wxid) { String url = apiPath + "?type=50"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("wxid", wxid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 消息置顶 * * @param chatRoomId * @param msgid * @return */ public static JSONObject top_msg(String chatRoomId, Long msgid) { String url = apiPath + "?type=51"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("msgid", msgid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 取消置顶 * * @param chatRoomId * @param msgid * @return */ public static JSONObject close_top_msg(String chatRoomId, Long msgid) { String url = apiPath + "?type=52"; Map map = new HashMap<>(); map.put("chatRoomId", chatRoomId); map.put("msgid", msgid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 朋友圈首页 * * @return */ public static JSONObject sns_first() { String url = apiPath + "?type=53"; JSONObject response = post(url, null); System.out.println(response); return response; } /** * 朋友圈下一页 * * @param snsId * @return */ public static JSONObject sns_next(String snsId) { String url = apiPath + "?type=54"; Map map = new HashMap<>(); map.put("snsId", snsId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 查询联系人或群名称 * * @param wxid 微信id * @return */ public static JSONObject query_nickname(String wxid) { String url = apiPath + "?type=55"; Map map = new HashMap<>(); map.put("id", wxid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 下载消息附件 * * @param msgId * @return */ public static JSONObject download_msg_attach(Long msgId) { String url = apiPath + "?type=56"; Map map = new HashMap<>(); map.put("msgId", msgId); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } /** * 获取群/群成员信息 * * @param wxid * @return */ public static JSONObject get_member_info(String wxid) { String url = apiPath + "?type=57"; Map map = new HashMap<>(); map.put("wxid", wxid); JSONObject response = post(url, JSON.toJSONString(map)); System.out.println(response); return response; } @SneakyThrows public static JSONObject post(String url, String json) { String body = Jsoup.connect(url) .method(Connection.Method.POST) .header("Content-Type", "application/json") .requestBody(json) .execute().body(); return JSON.parseObject(body); } @SneakyThrows public static JSONObject hook(String url, String json) { String body = Jsoup.connect(url) .data("msg",json) .method(Connection.Method.POST) .timeout(1000) .execute().body(); return JSON.parseObject(body); } }