diff --git a/java/WeChatHookUtil.java b/java/WeChatHookUtil.java new file mode 100644 index 0000000..a992cee --- /dev/null +++ b/java/WeChatHookUtil.java @@ -0,0 +1,631 @@ +package com.rongan.cloud.controller; + +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.rongan.cloud.controller + * @NAME: WeChatHookUtil + * @AUTHOR: wxs + * @DATE: 2023/5/31 10:37 + * @PROJECT_NAME: WeChatHookUtil-java + **/ +public class WeChatHookUtil { + + /** + * jsoup 依赖 + * + * org.jsoup + * jsoup + * 1.14.3 + * + * + * fastjson 阿里依赖 + * + * com.alibaba + * fastjson + * 1.2.83 + * + * + * lombok 依赖 + * + * org.projectlombok + * lombok + * true + * + */ + 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); + } + +}