【前言】各位葫芦丝好!
最近在研究微信小程序 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 项目有什么坑?
有问题评论区留言,看到必回

【提示】本站只提供资源,不提供技术支持,介意勿下!!
【公告】没有基础小白不要下载,站长不教!!
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果有侵权之处请第一时间联系我们删除。敬请谅解







![[精品软件] 乐咔相机V1.00相机功能强大-百云游资源网](https://baiyunyou.com/wp-content/uploads/2021/04/153814eqsommgo8cd6sevs.jpg)











暂无评论内容