galenzhao 发表于 3 天前

把一堆兑换码变成一张 Markdown 图片,每人打开领一条

送 App Store / 活动码时,常见两种尴尬:

直接贴一长串码 → 前面的人秒光,后面的人只能干瞪眼,还容易被脚本扫

私信一个个发 → 累,还不好统计
做了个小工具 兑图:粘贴一堆兑换码,生成一个图片链接。别人打开这张图,就从池子里领一条没用过的;同一个 IP 只会领到一条,刷新还是自己那条。码发完了显示「都兑换完了」。

怎么用

打开 https://duitu.zhis.eu

粘贴兑换码(一行一条)

复制生成的图片 URL ,丢进帖子 / README / 群里,例如:

https://duitu.zhis.eu/i/3829eae66b9d2b2475304692.svg

![]( https://duitu.zhis.eu/i/3829eae66b9d2b2475304692.svg)

规则(简版)

每个 IP 对同一链接只领 1 条

同 IP 再访问:显示当初领到的码,不浪费新码

池空了:显示「都兑换完了」

全部领完后默认保留 7 天领取记录,然后自动清理;清理后原链接仍显示领完(不是 404 )

默认只接受 App Store 风格 XXXX-XXXX-XXXX(服务端校验)
图片是很小的 SVG (大概几百字节),跑在 Cloudflare Workers + Durable Objects 上,无注册。

开源 & 自托管

https://github.com/galenzhao/duitu
wrangler deploy 就能自己搭一份。格式校验、领完保留天数都用环境变量配。

已知限制

同一公司 / 咖啡厅 Wi‑Fi 共用出口 IP 时,会共用一次领取额度

部分客户端(如 Discord )可能按 URL 强缓存图片,后面的人可能仍看到第一次的图;浏览器直开一般没问题

GitHub 等对 SVG 嵌入可能有限制

galenzhao 发表于 3 天前

好像批量扫码的有点离谱了,
2min ,这个测试的码就领完了。
但是没有人回复呢

jpyl0423 发表于 3 天前

防君子不防小人

kekxv 发表于 3 天前

并不是所有访问图片的人都需要兑换码

galenzhao 发表于 3 天前

@kekxv 对,但是这个没想好怎么处理

yulgang 发表于 3 天前

很多年前,我用 apps.evozi.com/apk-downloader/ 这个页面加上验证码做了一个领游戏兑换码的程序,也是根据访客 IP 做的限制。每周用脚本跑一遍被领走的码,如果没被兑换就再加入号码池里。

galenzhao 发表于 3 天前

@yulgang 加验证码肯定不行,就是方便嵌到任何地方,一般页面也不可能让你嵌个 js 。
重新验证也不现实,我也不知道这是什么的码,也不能有权限去验证用没用过
页: [1]
查看完整版本: 把一堆兑换码变成一张 Markdown 图片,每人打开领一条