在折腾自动订阅流转换(Sub2api)的时候,很多朋友肯定会遇到这样一个让人头秃的场景:明明手里的 Team 账号在官方的桌面客户端(比如 Codex)里跑得好好的,登录丝滑,飞快。可一旦你想把这个账号导入到自建的 Sub2api 后端,或者通过 API 接入第三方面板时,系统就无情地弹出了 OAuth 手机号验证界面。

这就很尴尬了。我们搭建 Sub2api 图的就是个省心和自动化,结果每次导账号还得掏手机收验证码,这完全违背了“无人值守”的初衷。今天咱们就来掰扯掰扯这个问题,看看是哪里出了问题,以及有没有什么神仙办法能绕过这个限制。

问题出在哪?直连与 API 的区别

OAuth 手机号验证界面示例

当风控触发时,系统会强制要求输入手机号进行验证。

首先得搞清楚,为什么 Codex 桌面端能过,而 Sub2api 不能?

这本质上属于“信任环境”的差异。官方桌面端通常经过了特定的签名验证和设备指纹认证,服务器端默认认为是客户端发起了合法请求。而 Sub2api 大多运行在服务器端(VPS 或 Docker),其请求来源的特征指纹与官方客户端不符。

对于 Team 账号这种商业/企业级账号而言,风控策略通常会比普通个人账号更严格。当系统检测到一个陌生的 IP、异常的 User-Agent 或者非官方签名的请求尝试通过 OAuth 2.0 接口换取 Token 时,安全机制就会被触发,强制要求输入绑定的手机号进行二次确认(MFA)。

方案一:Token“复用”大法(最推荐)

浏览器开发工具获取 Token 示意图

在浏览器的 Application 或 LocalStorage 中可以找到有效的 Refresh Token。

既然直接登录会被风控拦截,那我们能不能不登录,直接用已经登录好的“通行证”呢?这就是 Token 复用法的核心思路。

  1. 获取 Token:先在Codex桌面端或者其他你已经成功登录的客户端中,抓包或者通过日志获取到该 Team 账号的有效 Refresh Token 或 Access Token。通常在浏览器的开发者工具(F12) -> Application -> Local Storage / Cookies 里能找到。
  2. 直接填入:很多成熟的 Sub2api 实现项目(如 sub-web、subconverter 的高级配置中)是支持直接填入 Token 的,而不一定要填 User + Password。
  3. 逻辑:后端拿到 Token 后,直接去请求订阅接口,从而跳过了“用户名密码登录 -> 触发风控 -> 手机验证 -> 换取 Token”这一步高危操作。

优点:直接绕过 OAuth 登录流程,稳定性极高。 缺点:Token 是有有效期的,过期了还是得重新获取一次(不过通常 Refresh Token 有效期很长,甚至永久)。

方案二:拨号 VPS / 代理IP 池

如果你非要走“账号+密码”的自动化登录流程,那就得伪装你的请求环境,让它看起来更像一个“正常”的桌面客户端。

  1. 固定住宅 IP:不要用那种廉价的公网机场 IP,尽量去买干净的住宅 IP(Residential IP)。Team 账号对数据中心 IP 的敏感度极高。
  2. 伪装指纹:在 Sub2api 的请求头中,完全复刻官方客户端的 User-Agent 和 TLS 指纹(JA3)。有些开源的 Sub2api 项目已经内置了这些伪装,你只需要在配置文件里开启对应选项即可。
  3. 保持 IP 一致性:尽量保证每次请求订阅的 IP 地址不变,不要频繁跳跃。频繁更换 IP 地理位置直接触发风控封号是分分钟的事。

方案三:容器级隔离与 Cookie 植入

这是一个进阶玩法,适合那些喜欢折腾 Docker 的朋友。

我们可以利用浏览器自动化工具(如 Puppeteer 或 Playwright)在容器中模拟一次登录。不过,这只是为了获取 Cookie 和 Session。

  1. 手动登录一次:在容器里的浏览器中手动完成一次包括手机验证在内的完整登录流程。
  2. 提取 Session:将登录成功后的 Cookie 和 LocalStorage 数据导出。
  3. 持久化注入:修改 Sub2api 的启动脚本,在每次发起请求前,先将这些提取好的 Session 数据注入到请求上下文中。这样,在服务器看来,这就是一个保持“已登录”状态的会话,而不是一次新的登录尝试。

方案四:寻找支持“免流”的第三方转换源

如果以上技术方案都太麻烦,还有一个取巧的路子。

部分社区维护的公共订阅转换节点(或者一些聚合订阅源),其实已经完成了对特殊账号的适配。你可以尝试通过这些中转服务间接获取订阅链接。虽然这会牺牲一点隐私(你的订阅经过他人服务器),但在可用性上往往是最省力的。

不过要注意,Team 账号通常绑定着企业隐私,走第三方中转风险自担,不建议用于核心生产环境。

总结

总而言之,Sub2api 导入 Team 账号被卡手机号验证,本质上是自动化脚本与风控系统之间的博弈

如果你追求极致的稳定,请死磕 方案一,直接搞定 Token 复用,一劳永逸;如果你必须通过模拟登录解决,那么 方案二 的 IP 环境净化就是必修课。别再用在那裸奔的 Vultr/DigitalOcean IP 直接硬刚官方服务器了,那样除了被风控封号,什么也得不到。

希望这些思路能帮你把那个烦人的验证码框彻底关掉!

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭