mirror of
https://github.com/ttttupup/wxhelper.git
synced 2025-08-03 06:17:35 +08:00
620 lines
16 KiB
Java
620 lines
16 KiB
Java
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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, String> 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);
|
|
}
|
|
|
|
}
|