From 8348a2f8dbb1bd1d232de7523608d53652dbaa78 Mon Sep 17 00:00:00 2001
From: wxs <18771603711@sina.cn>
Date: Wed, 31 May 2023 13:11:59 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0java=E5=AE=A2=E6=88=B7?=
=?UTF-8?q?=E7=AB=AF=E5=B7=A5=E5=85=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
java/WeChatHookUtil.java | 631 +++++++++++++++++++++++++++++++++++++++
1 file changed, 631 insertions(+)
create mode 100644 java/WeChatHookUtil.java
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);
+ }
+
+}