mizorewww / x_gift_bot
git clone https://github.com/mizorewww/x_gift_bot.git
X Premium gift CLI and redemption site
—
stars, 24h
—
stars, 7 days
+1.3k
stars, 30 days · #246
1.3k
★ total
390
forks · 2 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageGo
LicenseMIT
Created2026-10-02 (18d ago)
Last push11d ago
Watchers2
OwnerUser
Links
- GitHub: github.com/mizorewww/x_gift_bot
- Homepage: xp.kfcv50.today
- Releases · Issues · Hacker News mentions
README excerpt
# XGift X (Twitter) Premium 礼品兑换平台。你生成兑换码发给用户,用户在网页上输入兑换码和自己的 X 用户名,系统自动完成 Premium 赠送的下单与付款。 - **兑换页**:用户自助兑换,实时显示处理进度 - **管理后台**:生成/停用兑换码、批次文件夹、统计面板、订单状态 - **安全**:凭据逐条 AES-256-GCM 加密存储,付款前逐项校验金额与商户,付款确认只提交一次 ## 截图 以下截图来自本地模拟预览(全部为示例数据): | 兑换页 | 管理页(统计概览) | |---|---| | | | 管理页深色模式: ## 本地预览(不写任何真实配置) 想先看看界面?只需要 Node.js 22+: [code] 打开 http://127.0.0.1:4173 是兑换页,http://127.0.0.1:4173/admin 是管理后台。所有数据都是内存示例,不连接真实服务。在兑换页输入 `XG-` 加 48 个字母 `A` 可以演示完整成功流程。 ## 部署教程 ### 第一步:准备这些东西 部署前请先准备好以下四样东西,配置向导会逐项询问: 1. **X 登录 Cookie**(`auth_token` 和 `ct0`):在浏览器登录 x.com 后,按 F12 打开开发者工具 → Application(应用)→ Cookies → `https://x.com`,复制这两项的值。这是系统以你的 X 账号身份发起赠送的凭据。 2. **用于付款的银行卡(一张或多张)**:卡号、有效期、CVC,以及发卡行登记的持卡人姓名、账单邮箱和账单国家(两位代码,如 `BD`)。多张卡会在服务端加密保存并随机轮换,新卡可复用同一账单资料。请只填真实信息。 3. **代理(可选)**:服务器能直接访问 x.com 就选「直连」;否则准备一个代理节点。支持 sing-box 的任意 outbound 类型(anytls、socks、http、shadowsocks、vmess、vless、trojan 等),也可以直接粘贴完整 sing-box 配置。 4. **Stripe 公钥**:X 结账页面使用的 `pk_live_` 开头公钥。使用默认 X Premium 目录时向导会说明;它与商户、商品、价格一起保存在「目录」配置中,也可以完全自定义。 网络路径独立配置:X 账号与资格检查始终直连;生成付款链接所需的地区报价校验与创建链接使用同一个 `proxy` 出口,避免币种和金额因地区不同而变化;X 请求不读取环境代理;Stripe 可使用包含 `direct` 的 `payment-outbounds` 节点池。连接故障触发 30 分钟冷却,安全查询最多尝试 3 个出口;付款确认不会自动重放。未配置或空数组时,新订单直连。Stripe 不读取环境代理。详见 付款节点池配置。直接在浏览器打开 Stripe 链接时使用浏览器网络。 另外需要:一台 Linux 服务器、一个指向该服务器的域名、服务器上安装 Go 1.27+(或在自己电脑上构建后上传二进制)。 ### 第二步:构建 [code] ### 第三步:运行配置向导 [code] 向导会一步步引导你完成配置,全程有中文提示: 1. **密码文件** — 自动生成一个随机密码用于加密保管库,保存在你指定的路径(默认 `sqlite/vault-password`,仅本人可读)。**请务必备份这个文件,丢失后所有加密数据无法恢复。** 2. **X 凭据** — 粘贴第一步准备的两个 Cookie。 3. **支付卡** — 输入卡信息和账单信息(卡号会自动校验)。想启用多卡轮换,向导完成后用 `xgift cards add` 追加更多卡,缺少的账单字段会自动继承。 4. **代理** — 选直连、按提示填 AnyTLS 节点,或粘贴 sing-box 配置;保存前会实际启动验证配置是否有效。 5. **Stripe 公钥** — 粘贴 `pk_live_` 公钥。 6. **商品目录** — 直接回车使用 X Premium 默认目录(3/6 个月套餐),或自定义商户、币种和套餐。 7. **站点配置** — 输入你的域名(如 `https://xp.example.com`),向导会生成 `site.env` 和随机的后台管理员密码(只显示一次,同时保存在文件里)。 完成后运行 `./bin/xgift status`,六条记录全部显示 `verified` 即为成功。 ### 第四步:启动网站 把向导生成的 `site.env`、`admin-password`、`vault-password` 放到安全目录(生产建议 `/etc/xgift/`,权限 0600),然后: [code] `site.env` 各字段含义: | 字段 | 说明 | |---|---| | `XGIFT_ORIGIN` | 站点完整域名(`https://` 开头) | | `XGIFT_LISTEN` | 监听地址,只能回环,如 `127.0.0.1:8787` | | `XGIFT_DATA_DIR` | 数据目录(vault.db、site.db 所在) | | `XGIFT_PASSWORD_FILE` | 保管库密码文件路径 | | `XGIFT_ADMIN_PASSWORD_FILE` | 后台密码文件路径 | | `XGIFT_PAYMENTS_ENABLED` | `true` 开放充值,`false` 暂停(不消耗兑换码) | ### 第五步:配置 HTTPS 反向代理 程序只监听本机端口,需要 Caddy(或任意反向代理)提供 HTTPS。`deploy/Caddyfile` 是模板,把 `xp.example.com` 替换成你的域名后放到 Caddy 配置目录并 reload 即可。模板默认只放行 Cloudflare 回源 IP,不用 Cloudflare 时删掉 `@cloudflare` 相关段、保留 `reverse_proxy` 即可。 验证: [code] ### 第六步:开始使用 浏览器打开 `https://你的域名/admin`,输入用户名 `admin` 和向导生成的密码: 1. 在「生成兑换码」选套餐、数量、批次名,点生成,复制或下载兑换码发给用户。 2. 顶部「统计概览」随时查看兑换进度和成功率。 3. 用户打开 `https://你的域名`,输入兑换码和 X 用户名即可完成充值。 ## 日常维护 [code] 更新配置用 `put`(从标准输入读取新值): [code] 付款卡按「卡 × 节点」组合随机轮换:每 3 个连续订单使用同一组合;任意订单被拒后立即换组合,被拒的那张卡进入 30 分钟冷却(其他卡继续轮换),补单也走同一逻辑。支付方明确 `do_not_try_again` 时该卡永久封锁直到显式解除。`cards add` 追加或更新(同卡号替换),`cards remove --last4 1234` 移除,`cards rota