🔥微信扫码取code免费部署+规避风控

【前言】各位葫芦丝好!

最近在研究微信小程序 code 获取和风控规避方案

发现一个很有意思的开源项目 YYB Go。

它能把“手机扫码授权”变成“服务端可复用的登录态”,再配合云环境和账号级代理,完美解决异地登录风控问题。

本文基于项目源码和扩展建议,整理一份完整的技术帖,欢迎交流!━━━━━━━━━━━━━━━━━━━━━【一、项目是什么】

YYB Go 是一个基于 Go 语言开发的应用宝协议逆向的轻量级 Web 控制台

核心解决三个问题:

生成微信扫码二维码,让用户手机授权服务端接管登录态(login_buffer + 凭据)

持久化到 SQLite对外提供 HTTP 接口

代调用 wxapp 能力(getCode / getPhoneNumber / operateWxData)

一句话定位:

“扫码接入 + 服务端持有登录态 + API 代调用” 的工具箱。

适用场景:

需要临时接入微信账号做接口联调需要在服务端复用登录态,

避免频繁扫码需要为内部测试提供稳定的 wxapp 调用入口结合代理出口,

解决异地登录风控(重点)━━━━━━━━━━━━━━━━━━━━━【二、技术栈一览】

语言:Go 1.23Web

框架:Gin

数据库:SQLite(modernc.org/sqlite)

接口文档:Swagger UI + OpenAPI

JSON前端:服务端渲染的 HTML 页面(resource/templates/)

网络代理:支持 SOCKS5 和 HTTP CONNECT

部署环境:MonkeyCode 云机(三天无对话回收,需持久化策略)依赖简洁,单体部署,非常适合云环境快速拉起。━━━━━━━━━━━━━━━━━━━━━【三、核心机制详解(重点)】

4.1

扫码授权链路(两层模型)用户授权层(手机端):

打开 /scan 页面,

调用 POST /qr 创建会话服务端请求微信 OAuth 页面,

解析二维码 UUID,

返回图片用户手机扫码并确认服务端会话层(服务端):

前端轮询 GET /qr/{session_id}/poll,

直到状态变为 authorized前端调用 POST /qr/{session_id}/confirm服务端访问 OAuth 回调,

从 CookieJar 提取 openid / accesstoken /

refreshtoken调用 YYB 接口换取 login_buffer将账号信息(含 login_buffer 和凭据)写入 SQLite4.2

为什么 login_buffer 是关键?

login_buffer 是后续所有协议会话建立的核心输入,无需每次重新扫码:

一次扫码得到 login_buffer基于它建立底层协议会话

(ManualAuth → 获取 SendKey/RecvKey/UIN/Ticket/DeviceID/HostAppID/PSK)

会话写入 sessions 表缓存,

后续复用4.3 协议会话建立流程(调用 /wxapp/* 时)

根据 ref 解析账号查询 sessions 表缓存(按 wechat_account_id + tcp_proxy 维度隔离)

缓存命中 → 直接复用缓存未命中或失效 → 重新建会话:

读取 login_buffer获取 LongLink 候选地址发起 ManualAuth 登录,

提取会话密钥获取 ShortLink 目标列表组装 WmpfSession 并写入缓存发起业务调用并返回结果

4.4 会话缓存粒度sessions 表唯一约束:(wechat_account_id, tcp_proxy)这意味着同一账号在不同代理出口下可以建立不同会话,为“账号级代理”提供了天然基础。

4.5 账号状态管理

alive:登录态有效

expired:凭据失效,需重新扫码

unknown:状态未知刷新机制

(POST /accounts/refresh):使用 refresh_token 刷新 access token,重新换取 login_buffer,更新状态。━━━━━━━━━━━━━━━━━━━━━【四、当前安全边界与扩展方向】

现有能力:

扫码接入并持久化账号

login_buffer + 凭据存储与刷新

协议会话缓存与复用(按账号 + 代理隔离)

全局 TCP 代理支持(SOCKS5 / HTTP CONNECT)

控制台页面 + OpenAPI 文档

三类 wxapp 能力调用

当前缺失(重要):

无后台登录鉴权(任何人访问页面即可操作)

无账号级来源 IP 限制

无权限模型

无操作审计日志

因此,目前更适合本地测试或内网环境。如要部署到公网或供多人协作,必须先做安全加固。

扩展优先级建议(分三层推进):

第一层(安全):

管理后台鉴权

操作审计日志

账号操作权限控制

来源 IP 白名单

第二层(网络策略):

账号级代理配置

账号级固定出口

调用链路可视化

失败重试策略

第三层(易用性):

账号分组与标签

调用历史与导出

批量健康检查

批量重扫提醒

━━━━━━━━━━━━━━━━━━━━━

【五、核心扩展:账号级 IP 绑定(解决风控)】

需求背景:

微信风控会校验登录 IP 与账号常用地域是否一致。如果所有账号都走同一个服务器出口,极易触发异地登录提醒。解决办法:为每个账号绑定一个独立的代理出口 IP,让微信看到的 IP 与账号归属地一致。

可行性分析:

当前 sessions 表已经按 (wechat_account_id, tcp_proxy) 隔离会话,transport.go 已支持 SOCKS5/HTTP CONNECT 代理,所以实现基础已具备。只需在 wechat_accounts 表增加账号级代理字段(proxy_type、proxy_addr),并在调用时优先读取。

两种方案:

方案A(账号请求走指定出口 IP):账号表加代理字段 → 调用时使用账号级代理 → 会话缓存自动隔离

方案B(限制操作来源 IP):账号表加 allowed_source_ips → HTTP 层校验客户端 IP → 403 拒绝

两个方案可并行,一个控制出口,一个控制入口。

最小改造方案(数据层):

wechat_accounts 新增字段:

bound_proxy TEXT — 保存 socks5://… 或 http-connect://…

allowed_source_ips TEXT — 保存 JSON 数组或逗号分隔 IP

后端层:

增加策略解析函数,统一在调用前读取账号级配置,计算有效代理,校验来源 IP。

前端层:

账号详情页增加代理输入框和 IP 白名单输入框。

这样就能实现“每个账号走不同 IP”的精细控制,完美规避异地风控。

━━━━━━━━━━━━━━━━━━━━━

【六、MonkeyCode 云环境部署要点】

MonkeyCode 云机三天无对话会回收,建议做好持久化:

Git 备份:

代码和数据库(resource/db/)定时 Push 到 Git 仓库

Docker 化:

将 YYB Go 打包为 Docker 镜像,快速重建环境

Dockerfile 示例:

FROM golang:1.23-alpine

WORKDIR /app

COPY . .

RUN go build -o yyb-go ./cmd/yyb-go

EXPOSE 8000

CMD [“./yyb-go”, “–host”, “0.0.0.0”, “–port”, “8000”]

代理持久化:

将代理配置存入数据库(即上面扩展的账号级代理),重建后自动恢复

运行命令(全局代理可选):

go run ./cmd/yyb-go –host 0.0.0.0 –port 8000 –db ./resource/db/yyb.db –tcp-proxy socks5://proxy:1080

━━━━━━━━━━━━━━━━━━━━━

【七、风险与注意事项】

合规风险提示:

本方案仅供技术学习和研究用途

请遵守微信用户协议和相关法律法规

不建议用于大规模自动化或商业用途

技术注意事项:

代理 IP 质量直接影响稳定性,建议选择高可用服务商

账号级代理配置错误可能导致会话建立失败

来源 IP 白名单过于严格可能影响正常使用

云环境回收前请做好数据备份,防止账号凭据丢失

提示词链接:https://www.ilanzou.com/s/klixOW6D

━━━━━━━━━━━━━━━━━━━━━

【互动区】Monkeycode注册:

#【AI分享月】🔥免费永久服务器!每日三千万token!#

有在用 YYB Go 的葫芦丝吗?

遇到过哪些风控问题?

MonkeyCode 云环境部署 Go 项目有什么坑?

有问题评论区留言,看到必回

🔥微信扫码取code免费部署+规避风控插图

© 版权声明
THE END
喜欢就支持以下吧
点赞23赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容