是 否 有 玫 瑰 悄 然 绽 放

当Clash遇见WeChat:论代理工具对微信快捷登录(本地回环流量)的误伤与防御

2025.04.09

0x00:被代理「误伤」的本地服务

作为一款热门的FPS游戏,无畏契约的快捷登录功能本应让玩家体验丝滑的社交连接。然而,当我在开启Clash系统代理的环境下启动游戏时,微信自动登录窗口却神秘消失了。关闭代理后,一切恢复正常。这个现象引发了我的好奇:为什么一个代理工具会干扰本地的进程间通信? 本文将记录完整的排查思路与技术细节。

0x01:微信本地服务的通信原理

微信客户端在登录后,会在本机启动一个 本地 HTTP 服务(默认端口通常是 80 或随机端口),用于提供快捷登录、二维码生成等接口。其他应用(如无畏契约启动器)通过向 http://localhost:端口/... 发送 HTTP 请求,验证微信是否已登录并获取用户信息。

关键步骤

  1. 检测微信进程
    无畏契约启动器会先检查微信客户端进程(如 WeChat.exe)是否在运行,通常通过枚举系统进程列表实现。

  2. 读取本地服务端口

    • 微信客户端在登录后,会将本地服务端口写入 注册表(如 HKEY_CURRENT_USER\Software\Tencent\WeChat 下的 InstallPath 或 Port 键值)。

    • 或通过 共享内存/文件(如 %APPDATA%\Tencent\WeChat\端口号文件)暴露端口信息。

  3. 发送 HTTP 请求验证登录状态
    无畏契约启动器向 http://localhost:端口号/api/check_login(示例路径)发送请求,若返回 200 OK 并携带加密的用户信息(如 OpenID),则触发快捷登录。

0x03:微信本地服务的通信原理

当开启系统代理(如 Clash)时,无畏契约启动器的网络请求可能被强制转发到代理服务器,而代理服务器通常无法处理以下两类请求:

  1. 本地回环地址(Localhost)
    代理规则默认会忽略 127.0.0.1 或 localhost 的流量,但某些配置错误可能将其转发到代理,导致请求无法到达微信的本地服务。

  2. 非标准 HTTP/HTTPS 端口
    如果微信的本地服务使用非 80/443 端口(如 8080),而代理规则未明确放行这些端口,请求可能被丢弃或重置。

0x04:解决方案

- 代理白名单:在Windows设置中启用「绕过本地地址的代理」新增 “localhost.weixin.qq.com"

1

🔄 更新于 2025-04-21

上面的方法经常因为重新失效,直接在clash中设置 新增 “localhost.weixin.qq.com

0x05:相关阅读

4399 网站在 pc 浏览器网页这样的微信登录是怎么实现的获取当前微信的?

(本文由Deepseek撰写)

发表评论