0x00:被代理「误伤」的本地服务
作为一款热门的FPS游戏,无畏契约的快捷登录功能本应让玩家体验丝滑的社交连接。然而,当我在开启Clash系统代理的环境下启动游戏时,微信自动登录窗口却神秘消失了。关闭代理后,一切恢复正常。这个现象引发了我的好奇:为什么一个代理工具会干扰本地的进程间通信? 本文将记录完整的排查思路与技术细节。
0x01:微信本地服务的通信原理
微信客户端在登录后,会在本机启动一个 本地 HTTP 服务(默认端口通常是 80
或随机端口),用于提供快捷登录、二维码生成等接口。其他应用(如无畏契约启动器)通过向 http://localhost:端口/...
发送 HTTP 请求,验证微信是否已登录并获取用户信息。
关键步骤:
-
检测微信进程
无畏契约启动器会先检查微信客户端进程(如WeChat.exe
)是否在运行,通常通过枚举系统进程列表实现。 -
读取本地服务端口
-
微信客户端在登录后,会将本地服务端口写入 注册表(如
HKEY_CURRENT_USER\Software\Tencent\WeChat
下的InstallPath
或Port
键值)。 -
或通过 共享内存/文件(如
%APPDATA%\Tencent\WeChat\端口号文件
)暴露端口信息。
-
-
发送 HTTP 请求验证登录状态
无畏契约启动器向http://localhost:端口号/api/check_login
(示例路径)发送请求,若返回200 OK
并携带加密的用户信息(如 OpenID),则触发快捷登录。
0x03:微信本地服务的通信原理
当开启系统代理(如 Clash)时,无畏契约启动器的网络请求可能被强制转发到代理服务器,而代理服务器通常无法处理以下两类请求:
-
本地回环地址(Localhost)
代理规则默认会忽略127.0.0.1
或localhost
的流量,但某些配置错误可能将其转发到代理,导致请求无法到达微信的本地服务。 -
非标准 HTTP/HTTPS 端口
如果微信的本地服务使用非80
/443
端口(如8080
),而代理规则未明确放行这些端口,请求可能被丢弃或重置。
0x04:解决方案
- 代理白名单:在Windows设置中启用「绕过本地地址的代理」新增 “localhost.weixin.qq.com"
🔄 更新于 2025-04-21
上面的方法经常因为重新失效,直接在clash中设置 新增 “localhost.weixin.qq.com”
0x05:相关阅读
4399 网站在 pc 浏览器网页这样的微信登录是怎么实现的获取当前微信的?
(本文由Deepseek撰写)