🐧 本项目已链接并认可 LINUX DO 社区 —— 真诚、友善、团结、专业,共建你我引以为荣之社区。
用 比特浏览器(固定邮箱窗)+ 微软 Edge 无痕(v0 注册窗) 自动完成一条链路:
生成临时邮箱 → 用邮箱验证码注册 v0 → 创建并保存 API Key。
- 这是一个个人自用的初步可用版本,目前只做到"单条链路能跑通、能批量重试",适合个人本地使用,不是开箱即用的成熟产品。
- 代码里仍有不少待优化点(无并发、依赖本机 GUI、选择器对站点改版敏感等,详见文末「已知局限」),这些会在后续版本逐步优化,当前先以能用为准。
- 仅供 个人学习与自动化技术研究。使用前请阅读文末免责声明,并自行遵守 v0 / Vercel / 邮箱站的服务条款与当地法律法规。
- 如果你是从别处拿到这个项目:它需要你自己准备账号、代理、浏览器环境并做一次手动登录才能运行,不是双击即用,请完整读完下面的准备与配置步骤。
- 一、这个项目能做什么
- 二、你需要自己准备的东西
- 三、安装
- 四、配置:GitHub 账号密码要自己填
- 五、必须的手动操作
- 六、运行
- 七、结果保存在哪
- 八、工作原理
- 九、成功率与速度(经验值)
- 十、常见问题
- 十一、隐私与提交 GitHub 前检查清单
- 十二、已知局限与后续优化方向
- 十三、致谢与技术栈
- 十四、免责声明
一句话:把"注册 v0 → 拿到一个 API Key"这件重复劳动自动化,并支持批量重试、失败续跑。
它由两个浏览器窗口分工协作:
- 比特浏览器固定窗口:长期保留邮箱站的 GitHub 登录态,负责生成临时邮箱、轮询验证码。
- 微软 Edge 无痕窗口:每一轮注册都新开一个干净会话,负责在 v0 上填邮箱、填验证码、创建 API Key。
跑完后,成功的 API Key 会写入本地 data/keys/,失败原因写入 logs/,方便排查。
运行前,下面这些都要你自己准备好,程序不会替你安装或登录:
| 需要准备 | 说明 |
|---|---|
| Python 3.10+ | 运行环境 |
| 比特浏览器(BitBrowser)客户端 | 必须安装并打开,且开启「本地 API」(默认端口 54345) |
| 一个 GitHub 账号 | 邮箱站需要用它登录(账号密码你自己填进配置,见第四节) |
| 微软 Edge 浏览器 | v0 注册默认走 Edge 无痕;Win 系统一般自带,无需额外装内核 |
| 可用的本机代理 | 例如 Clash / v2rayN,默认 HTTP 端口 127.0.0.1:7890,按你自己的客户端端口改 |
说明:GitHub 账号、代理节点、比特浏览器都属于"你自己的资源",本项目不提供、也不会内置任何真实账号或节点信息。
进入项目目录后执行:
cd "你的项目路径\v0"
python -m pip install -r requirements.txt
python -m playwright install chromium首次使用,把两个模板文件复制成正式文件:
copy config.example.yaml config.yaml
copy github_credentials.example.txt github_credentials.txt
config.yaml和github_credentials.txt都已被.gitignore忽略,不会被提交到 Git 仓库,可以放心填真实值。
打开 github_credentials.txt,一共两行:
第一行:你的 GitHub 账号或登录邮箱
第二行:你的 GitHub 密码
例如(下面是示意,请换成你自己的):
your_name@example.com
your_password_here
注意事项:
- 这个账号密码只用于在邮箱站点上通过 GitHub 登录,程序会自动把它填进 GitHub 登录框,不会上传到任何服务器,也不会写进日志。
- 该文件已被
.gitignore忽略,提交仓库时不会带上;仓库里只保留占位模板github_credentials.example.txt。 - 如果不填(或文件不存在),程序不会自动登录,届时你需要在弹出的浏览器窗口里手动登录 GitHub。
- 如果你的 GitHub 开了两步验证(2FA)/ 设备验证,账号密码只能自动填到第一步,验证码、设备确认这一步仍然需要你在浏览器里手动完成(这是安全机制,无法绕过,也不应该绕过)。
常用改动项:
| 配置项 | 含义 |
|---|---|
browser.bitbrowser.proxy.port |
代理端口,默认 7890,改成你代理软件的实际端口 |
browser.bitbrowser.mail_browser_id |
固定邮箱窗口 ID,可留空(首次运行会自动识别并写入 data/mail_browser_id.txt) |
browser.v0_mode |
v0 注册窗口模式,默认 edge_private(Edge 无痕) |
mail.domain |
临时邮箱域名 |
run.count |
总尝试次数(也可用命令行 -n 覆盖) |
mail.code_timeout |
等验证码超时(秒) |
其余参数都有中文注释,一般保持默认即可。
即使配置填好了,下面这些环节仍然需要你手动操作,请知悉:
- 手动打开比特浏览器客户端,并确认"设置 → 本地 API"已开启(默认
54345)。 - 手动打开代理软件,确认端口和
config.yaml里一致。 - 首次要在比特浏览器里手动完成一次 GitHub 登录(只需一次,之后登录态会长期保留):
- 在比特浏览器里新建或使用一个窗口,名称建议带
mail; - 在该窗口打开邮箱站(例如
https://mail.unsnow.org/app#inbox); - 完成 GitHub 登录,如遇 2FA / 设备确认 / 验证码,手动完成;
- 停在收件箱页面,保持该窗口可用。
- 在比特浏览器里新建或使用一个窗口,名称建议带
- Cloudflare 挑战:邮箱站偶尔弹出 Cloudflare 人机验证时,程序会自动等待通过;如果长时间卡住,在弹出的窗口里手动点一下即可。
- 遇到"要求手机号验证":这通常是出口 IP 被风控,程序会自动放弃当前窗口重试,但如果连续出现,需要你手动在代理软件里切换节点后再跑。
一句话总结:装环境、开客户端、填账号、首次登录、切节点这些是人工的;生成邮箱、填表、收验证码、创建 Key、保存结果这些是自动的。
先单次测通(推荐):
python run.py -n 1 --mode bitbrowser批量尝试(例如 10 次):
python run.py -n 10 --mode bitbrowser一键脚本(默认 bitbrowser + 10 次),或直接双击对应 .bat:
python one_key.pyrun.bat:安装依赖并运行,命令行参数透传给run.py。一键生成密钥.bat:带准备提示的一键版,跑one_key.py。
| 文件 | 内容 |
|---|---|
data/keys/all_keys.txt |
全部 API Key 汇总 |
data/keys/*.txt |
单账号密钥 |
data/accounts/*.json |
账号详情(含成功/失败状态) |
logs/failed_*.log |
失败堆栈,便于排查 |
这些目录都在
.gitignore里,提交仓库时不会带上你的密钥和账号。 详见第十一节。
[比特浏览器:固定邮箱窗] [Edge 无痕:每轮新建]
GitHub 登录(手动一次) 打开 v0 注册页
选择 / 替换临时邮箱 ------> 填入真实邮箱
轮询收件箱验证码 <------ 进入验证码页
返回 6 位验证码 ------> 提交验证码
创建 API Key → 保存 → 退出
为什么这样分工?
- 比特浏览器(邮箱侧):可长期保留 GitHub 登录态与 Cookie,避免每轮重登;指纹、代理可与 v0 注册环境隔离。
- Edge 无痕(v0 侧):本机一般自带 Edge,部署成本低;无痕模式每轮接近干净会话,适合"一次注册一个号",也更贴近手动能通过的场景。
以下为个人使用中的经验值,会随节点质量、风控强度、邮箱收信波动,不代表任何承诺。
- 成功率:节点正常、邮箱可换号时,约 100 次尝试大约 70 次成功(≈70%)。
- 速度:单条成功链路大约 1~3 分钟(收信快则偏短,验证码慢则偏长)。
- 当前是串行:一次跑完一个再下一个,未做多开并发。
失败常见原因:v0 要求手机号验证、验证码邮件超时、个别账号密钥页布局变化。
(1)一直提示要手机号 多为出口节点 / IP 风控,不是脚本逻辑坏了。换代理节点后重试;同一节点只要成功过一次,一般不必频繁换。
(2)验证码收不到 / 卡住 检查邮箱窗是否仍在收件箱、邮箱站是否限流、验证码是否进了垃圾箱。当前版本已对收信与页面切换做过优化。
(3)找不到 New / Replace mailbox 按钮 邮箱窗未登录、页面空白,或标签页不在收件箱。在比特浏览器里手动打开收件箱、确认能看到按钮后再运行。
(4)连不上比特浏览器本地 API
确认比特浏览器客户端已打开,且"本地 API"已开启(默认 54345);端口要和 config.yaml 里的 api_url 一致。
(5)进了密钥页却创建失败
页面文案可能是「API 密钥 / New API Key / Create」混用。可看 logs/failed_*.log 里的页面摘要,针对性调整选择器。
本项目已经做了这些隐私保护:
.gitignore已忽略:github_credentials.txt、config.yaml、data/、logs/、.env、比特窗口 ID、调试脚本等。- 仓库里只保留占位模板:
config.example.yaml、github_credentials.example.txt、.env.example。 - 源码里不含任何真实账号、密码、API Key 或真实代理节点。
提交前请再自查一遍:
[ ] github_credentials.txt 里是你的真实账号密码,且确认它没有被 git 跟踪
[ ] config.yaml 里的 mail_browser_id / 代理账号密码不会被提交
[ ] data/、logs/ 不在提交列表里(里面有真实 API Key 和账号)
[ ] all_keys.txt 或任何形如 v1:team_*:vcp_* 的密钥不在仓库中
⚠️ 特别提醒:如果你不是用git push,而是直接把整个文件夹压缩打包发给别人,.gitignore不起作用! 打包前请务必手动删除或清空github_credentials.txt、config.yaml(真实值)、data/、logs/这几个,否则会连同你的 GitHub 账号密码和全部 API Key 一起泄露出去。
自查命令(在项目目录执行,确认没有真实密钥进入暂存区):
git status
git ls-files | findstr /i "credentials config.yaml all_keys"| 局限 | 说明 |
|---|---|
| 无高并发 | 未实现多比特窗 + 多 Edge 并行,吞吐上限在串行 |
| 依赖本机 GUI | 需要比特客户端 + Edge,不适合纯服务器无头一键部署 |
| 节点敏感 | 代理质量差时,手机号验证比例升高 |
| 选择器对改版敏感 | 邮箱站 / v0 页面文案或结构大变时,需要调整选择器 |
| 密钥页偶发找不到按钮 | 少数账号密钥页布局差异导致 Create 按钮匹配失败 |
后续可能优化的方向(当前版本尚未实现):多开比特窗 + 多无痕并发以提高吞吐、更健壮的选择器与自愈重试、把节点检测与切换做得更自动。这些属于"以后再说"的计划,先以现在能用的版本提交。
- 浏览器自动化:Playwright / patchright / rebrowser-playwright
- 终端输出:rich
- 配置与环境:PyYAML、python-dotenv
- 依赖清单见
requirements.txt
- 本工具仅供个人学习与自动化技术研究使用。
- 使用者须自行遵守 v0 / Vercel、邮箱服务商、GitHub 等平台的服务条款,以及所在地区的法律法规。
- 因使用本工具产生的一切后果(包括但不限于账号被封禁、被风控、数据丢失等)由使用者自行承担,作者不承担任何责任。
- 请勿用于任何商业用途、批量滥用或违反平台规则的行为。
- API Key、账号密码等属于敏感凭据,请妥善保管,切勿公开仓库、截图或分享时泄露。
- 你有责任在分享 / 提交代码前,确认没有把任何真实凭据一并公开(参见第十一节检查清单)。