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

galenzhao 2026-07-24 06:31 1

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



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

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


怎么用



  1. 打开 https://duitu.zhis.eu

  2. 粘贴兑换码(一行一条)

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



![]( 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 嵌入可能有限制

最新回复 (7)
  • galenzhao 楼主 07-24 06:47
    1
    好像批量扫码的有点离谱了,
    2min ,这个测试的码就领完了。
    但是没有人回复呢
  • jpyl0423 07-24 07:51
    2
    防君子不防小人
  • kekxv 07-24 09:25
    3
    并不是所有访问图片的人都需要兑换码
  • galenzhao 楼主 07-24 09:34
    4
    @kekxv 对,但是这个没想好怎么处理
  • yulgang 07-24 09:54
    5
    很多年前,我用 apps.evozi.com/apk-downloader/ 这个页面加上验证码做了一个领游戏兑换码的程序,也是根据访客 IP 做的限制。每周用脚本跑一遍被领走的码,如果没被兑换就再加入号码池里。
  • galenzhao 楼主 07-24 10:07
    6
    @yulgang 加验证码肯定不行,就是方便嵌到任何地方,一般页面也不可能让你嵌个 js 。
    重新验证也不现实,我也不知道这是什么的码,也不能有权限去验证用没用过
  • FakerLeung 07-24 11:19
    7
    这个时候,就觉得 L 站自带的 cdk 功能很方便了
* 帖子来源V2EX
返回