OAuth Helper 是一个自动化 OAuth 登录流程的工具,通过 Telegram 与用户进行确认交互。它支持 7 家主流 OAuth 提供商,帮助在浏览器中完成需要人工确认的登录操作。
用途
当用户请求登录某个网站时,OAuth Helper 可以自动打开登录页面、识别可用的 OAuth 登录方式,并通过 Telegram 让用户选择与确认,最终完成登录。它适合需要人工介入确认的自动化登录场景,避免在无人确认的情况下擅自授权。
支持的提供商
工具支持以下 7 家提供商,并给出了各自的检测域名:
- Google:accounts.google.com
- Apple:appleid.apple.com
- Microsoft:login.microsoftonline.com、login.live.com
- GitHub:github.com/login/oauth
- Discord:discord.com/oauth2
- 微信:open.weixin.qq.com
- QQ:graph.qq.com
前置条件
- Clawd 浏览器已登录各 OAuth 提供商(一次性设置)
- 已配置 Telegram 频道
主要能力
核心工作流
流程 A:登录页面包含多个 OAuth 选项
- 打开网站登录页面
- 扫描页面中可用的 OAuth 按钮
- 发送 Telegram 消息,列出可选的登录方式,请用户回复编号选择
- 等待用户回复(60 秒超时)
- 点击所选 OAuth 按钮
- 进入流程 B
流程 B:OAuth 授权页面
- 根据 URL 检测 OAuth 页面类型
- 提取目标网站信息
- 发送 Telegram 消息,说明某网站请求某提供商登录,请用户回复 yes 确认
- 等待用户回复 yes(60 秒超时)
- 执行该提供商特定的点击序列
- 等待重定向回原网站
- 发送登录成功消息
检测模式
工具为每家提供商列出了 URL 匹配模式,用于识别当前处于哪家提供商的 OAuth 页面。例如 Google 匹配 accounts.google.com/o/oauth2、accounts.google.com/signin/oauth、accounts.google.com/v3/signin;Apple 匹配 appleid.apple.com/auth/authorize、appleid.apple.com/auth/oauth2;Microsoft 匹配 login.microsoftonline.com/common/oauth2、login.microsoftonline.com/consumers、login.live.com/oauth20;GitHub 匹配 github.com/login/oauth/authorize、github.com/login、github.com/sessions/two-factor;Discord 匹配 discord.com/oauth2/authorize、discord.com/login、discord.com/api/oauth2;微信匹配 open.weixin.qq.com/connect/qrconnect、open.weixin.qq.com/connect/oauth2;QQ 匹配 graph.qq.com/oauth2.0/authorize、ssl.xui.ptlogin2.qq.com、ui.ptlogin2.qq.com。
各提供商的点击序列
工具为每家提供商定义了具体的页面元素选择器与操作步骤。例如 Google 使用账号选择器 [data-identifier]、.JDAKTe,授权按钮 button:has-text("Allow")、button:has-text("Continue");Apple 使用邮箱输入框 input[type="email"]、#account_name_text_field,密码输入框 input[type="password"]、#password_text_field,继续按钮 button#sign-in、button:has-text("Continue"),信任设备按钮 button:has-text("Trust");Microsoft 使用账号选择器 .table-row[data-test-id],邮箱输入框 input[name="loginfmt"],密码输入框 input[name="passwd"],下一步按钮 button#idSIButton9,接受按钮 button#idBtn_Accept;GitHub 使用邮箱输入框 input#login_field,密码输入框 input#password,登录按钮 input[type="submit"],授权按钮 button[name="authorize"],两步验证输入框 input#app_totp;Discord 使用邮箱输入框 input[name="email"],密码输入框 input[name="password"],登录按钮 button[type="submit"],授权按钮 button:has-text("Authorize");微信采用二维码扫描方式,截图二维码发送给用户,等待手机扫码确认,检测页面重定向;QQ 支持二维码或密码登录,二维码方式截图发送给用户,密码方式包含切换链接 a:has-text("密码登录")、用户名输入框 input#u、密码输入框 input#p、登录按钮 input#login_button。
OAuth 按钮检测
工具会扫描登录页面中的特定选择器来识别 OAuth 按钮,例如 Google 使用 [data-provider="google"]、.google-btn,常见文本为 "Continue with Google";Apple 使用 [data-provider="apple"]、.apple-btn,常见文本为 "Sign in with Apple";Microsoft 使用 [data-provider="microsoft"],常见文本为 "Sign in with Microsoft";GitHub 使用 [data-provider="github"],常见文本为 "Continue with GitHub";Discord 使用 [data-provider="discord"],常见文本为 "Login with Discord";微信使用 .wechat-btn、img[src*="wechat"],常见文本为 "WeChat Login";QQ 使用 .qq-btn、img[src*="qq"],常见文本为 "QQ Login"。
使用方式
一次性设置
需要在 clawd 浏览器中登录各提供商,命令示例如下:
browser action=navigate profile=clawd url=https://accounts.google.com
Apple
browser action=navigate profile=clawd url=https://appleid.apple.com
Microsoft
browser action=navigate profile=clawd url=https://login.live.com
GitHub
browser action=navigate profile=clawd url=https://github.com/login
Discord
browser action=navigate profile=clawd url=https://discord.com/login
WeChat/QQ - Use QR scan, no pre-login needed
使用示例
用户:帮我登录 Kaggle
Agent:
- 导航到 kaggle.com/account/login
- 检测到 Google/Facebook/Yahoo 选项
- 发送:"🔐 Kaggle supports: 1️⃣ Google 2️⃣ Facebook 3️⃣ Yahoo Reply number to choose"
- 用户回复:1
- 点击 Google 登录
- 检测到 Google OAuth 页面
- 发送:"🔐 Kaggle requests Google login. Confirm? Reply yes"
- 用户回复:yes
- 选择账号,点击 Continue
- 发送:"✅ Logged into Kaggle!"
错误处理
- 未回复 yes:取消并通知用户
- 需要两步验证:提示用户手动输入验证码
- 二维码超时:重新截图新的二维码
- 登录失败:截图并发送给用户以便调试
适用场景
适用于需要通过 OAuth 登录网站、且希望由用户通过 Telegram 进行确认的自动化场景。特别适合登录页面提供多种 OAuth 选项、需要用户选择的情况,以及需要人工确认授权、处理两步验证或二维码扫描的场景。
限制
- 需要预先在 clawd 浏览器中登录各 OAuth 提供商(微信、QQ 除外,使用二维码扫描)
- 需要配置 Telegram 频道
- 用户确认有 60 秒超时限制
- 两步验证需要用户手动输入验证码
- 二维码登录需要用户使用手机扫码确认
- 版本历史:v1.0.0 为初始版本,支持 7 家 OAuth 提供商