sauravbhattacharya001/gif-captcha

GitHub: sauravbhattacharya001/gif-captcha

探索基于动态 GIF 的人机验证机制研究项目,测试 AI 对动画叙事的理解能力,并提供完整的 CAPTCHA 工具链。

Stars: 1 | Forks: 0

# 🎞️ GIF CAPTCHA **动态 GIF 能区分人类与 AI 吗?** 一项探索基于 GIF 的 CAPTCHA 作为抵御大型语言模型的人机验证机制的研究案例。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/45ebd186cd162103.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/ci.yml) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/fc08a7f826162104.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/codeql.yml) [![Docker](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7a1dfccad9162105.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/docker.yml) [![GitHub Pages](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/08e68dccf2162105.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/pages.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![npm](https://img.shields.io/npm/v/gif-captcha)](https://www.npmjs.com/package/gif-captcha) ![HTML](https://img.shields.io/badge/Built%20with-HTML%2FCSS%2FJS-orange) ![GitHub repo size](https://img.shields.io/github/repo-size/sauravbhattacharya001/gif-captcha) ![GitHub last commit](https://img.shields.io/github/last-commit/sauravbhattacharya001/gif-captcha) ![GitHub issues](https://img.shields.io/github/issues/sauravbhattacharya001/gif-captcha) [**查看在线演示 →**](https://sauravbhattacharya001.github.io/gif-captcha/) · [**API 文档 →**](https://sauravbhattacharya001.github.io/gif-captcha/docs/)
## 📖 概述 本案例研究测试了基于 GIF 的 CAPTCHA —— 特别是那些需要理解动画序列中意外事件的能力 —— 是否能作为抵御 LLM 的有效人机验证机制。 研究向 GPT-4 提供了 10 个 GIF,每个 GIF 都包含情节反转或意外事件,并要求其“描述这个意外事件”。同时收集了人类的回答作为基准。 ## 🔬 研究方法 | 组件 | 详情 | |-----------|---------| | **测试模型** | GPT-4 (纯文本, 视觉功能前版本) | | **测试集** | 10 个带有意外情节反转的动画 GIF | | **提示词** | *"描述这个意外事件"* | | **基准** | 针对每个 GIF 收集的人类描述 | | **成功标准** | AI 必须生成语义准确的动画事件描述 | ## 📊 结果 **得分:10/10 CAPTCHA 成功拦截 GPT-4** | # | GIF | 人类能描述吗? | GPT-4 能描述吗? | |---|-----|:---:|:---:| | 1 | 决斗情节反转 | ✅ | ❌ | | 2 | 说唱歌手滑旱冰 | ✅ | ❌ | | 3 | 飞行的滑板手 | ✅ | ❌ | | 4 | 香蕉吉祥物斗舞 | ✅ | ❌ | | 5 | 井字棋狗 | ✅ | ❌ | | 6 | 父母狗的牺牲 | ✅ | ❌ | | 7 | 镜子手错觉 | ✅ | ❌ | | 8 | 公路 180° 漂移 | ✅ | ❌ | | 9 | 路怒症拥抱 | ✅ | ❌ | | 10 | 生日蛋糕糊脸 | ✅ | ❌ | GPT-4 对每个测试的回应完全相同: ## 🔑 关键发现 ### 2023年:GIF CAPTCHA 是有效的 纯文本 LLM 完全无法处理动态视觉内容。需要理解动画序列叙事的 GIF CAPTCHA 是一种 **100% 有效** 的人机验证机制。 ### 2025年更新:格局已变 多模态 LLM (GPT-4V, GPT-4o, Claude 3.5, Gemini 1.5 Pro) 现在可以: - 描述从 GIF 中提取的静态帧 - 从视觉上下文线索推断可能的动作 - 识别物体、人物和场景 **简单的视觉识别 CAPTCHA 已不再足够。** 然而,那些需要理解**时机**、**叙事惊喜**和**喜剧反转**的 CAPTCHA 可能仍然会给那些独立处理帧而非将其视为连续序列的 AI 系统带来挑战。 ## 🚀 在线演示 该互动案例研究已部署为静态页面: **[sauravbhattacharya001.github.io/gif-captcha](https://sauravbhattacharya001.github.io/gif-captcha/)** ### 🎮 互动 CAPTCHA 演示 **[尝试演示 →](https://sauravbhattacharya001.github.io/gif-captcha/demo.html)** 亲自接受 GIF CAPTCHA 挑战!该互动演示: - 向你展示 10 个带有意外反转的 GIF - 让你输入自己对意外事件的描述 - 在你提交后揭示人类和 GPT-4 的回答 - 跟踪你在所有挑战中的“人类得分” - 提供详细的结果摘要,将你与 GPT-4 的 0/10 得分进行比较 ### 📊 研究分析仪表板 **[查看分析 →](https://sauravbhattacharya001.github.io/gif-captcha/analysis.html)** 通过交互式可视化深入研究研究数据: - **CAPTCHA 分类体系** — 6 个认知类别(叙事反转、肢体喜剧、动物行为、视觉戏法、社会反转、视错觉),带筛选标签 - **类别与难度图表** — Canvas 渲染的条形图,显示分布和 AI 难度评级(2023 年与 2025 年估算值) - **人类 vs AI 雷达图** — 6 轴认知能力比较(时序排列、叙事惊喜、文化语境、运动追踪、幽默检测、物体识别) - **多模型比较** — GPT-4、GPT-4o、Claude 3.5 和 Gemini 1.5 Pro 在各类别中的估算得分 - **AI 能力时间线** — 从 0/10 (2023) 到预计未来表现的演变 - **单 GIF 分析卡片** — 可展开的详细分类,包含难度计、认知技能以及每个 CAPTCHA 生效原因的解释 ### 🛠️ CAPTCHA 工作坊 **[打开工作坊 →](https://sauravbhattacharya001.github.io/gif-captcha/generator.html)** 创建你自己的自定义 GIF CAPTCHA 挑战集: - **构建** — 添加 GIF 挑战,包括标题、URL、预期答案、类别和难度评级 - **预览** — 像用户体验那样测试你的 CAPTCHA 集,包含答案提交和揭示过程 - **导出/导入** — 导出为 JSON,下载为文件,或生成可分享的 URL 链接 - **本地存储** — 在浏览器中自动保存你的工作,永不丢失进度 - **示例集** — 加载预置的 5 个挑战集以快速入门 ### 🤖 AI 响应模拟器 **[尝试模拟器 →](https://sauravbhattacharya001.github.io/gif-captcha/simulator.html)** 探索不同的 AI 模型如何响应每个 GIF CAPTCHA: - **5 种 AI 模型** — GPT-4 (2023)、GPT-4V (2023 Q4)、GPT-4o (2024)、Claude 3.5 (2024)、Gemini 1.5 Pro (2024) - **模拟响应** — 查看每个模型对每个 CAPTCHA 的具体回答 - **能力分解** — 针对每个 CAPTCHA 分析模型能力与要求(帧分析、运动追踪、叙事理解、文化语境、幽默检测、物体识别)的对比 - **推理说明** — 解释为什么每个模型会成功、部分成功或失败 - **模型 × CAPTCHA 热力图** — 所有模型和 CAPTCHA 的通过/未通过矩阵 - **比较图表** — 堆叠有效性条形图和能力雷达叠加图 - **交互式模型切换** — 点击任意模型查看其完整响应集 ### ⏱️ 时序挑战 **[尝试时序挑战 →](https://sauravbhattacharya001.github.io/gif-captcha/temporal.html)** 一种更难的 CAPTCHA 格式,用于测试时序事件排序: - **事件排序** — 观看每个 GIF 并按正确的时间顺序排列 4 个事件 - **拖放 + 按钮** — 通过拖动或使用箭头按钮重新排序事件(适配移动端) - **Kendall Tau 评分** — 成对一致性评分 (0–100%),为接近正确的排序提供部分分数 - **单挑战 AI 分析** — 解释为什么逐帧 AI 处理在时序排列上会失败 - **研究背景** — 探索时序 CAPTCHA 作为下一代人机验证方法 - **结果仪表板** — 总分、单挑战细分带评分条、研究意义 ### 案例研究页面 具有深色主题 UI,特点包括: - 带有 CAPTCHA 通过/未通过徽章的完整结果表 - 链接到 GIF 源以便手动验证 - 带有视觉标注的关键发现 ## 🛠️ 技术栈 | 技术 | 用途 | |-----------|---------| | HTML5 | 页面结构 | | CSS3 (自定义属性) | 深色主题,响应式设计 | | JavaScript | 核心 CAPTCHA 库 (UMD, 浏览器 + Node.js) | | GitHub Pages | 托管 | | npm | 包分发 | ## 📦 安装 作为 npm 包安装,以编程方式访问 CAPTCHA 工具: ``` npm install gif-captcha ``` ``` const gifCaptcha = require("gif-captcha"); // Create a challenge const challenge = gifCaptcha.createChallenge({ id: 1, title: "Surprise Ending", gifUrl: "https://example.com/twist.gif", humanAnswer: "The cat fell off the table unexpectedly", }); // Pick 5 random challenges from a pool const selected = gifCaptcha.pickChallenges(challengePool, 5); // Validate a user's answer (fuzzy matching with Jaccard similarity) const result = gifCaptcha.validateAnswer( userAnswer, challenge.humanAnswer, { threshold: 0.3, requiredKeywords: ["cat", "fell"] } ); console.log(result); // { passed: true, score: 0.75, hasKeywords: true } // Sanitize untrusted input for safe HTML rendering const safe = gifCaptcha.sanitize(''); ``` 或在浏览器中通过 CDN 使用: ``` ``` ## 📂 项目结构 ``` gif-captcha/ ├── src/ │ └── index.js # Core library (UMD — browser + Node.js) ├── index.html # Interactive case study page ├── demo.html # Interactive CAPTCHA demo (try it yourself!) ├── analysis.html # Research analysis dashboard with charts & taxonomy ├── generator.html # CAPTCHA Workshop — create custom challenge sets ├── simulator.html # AI Response Simulator — model comparison & capability analysis ├── temporal.html # Temporal Sequence Challenge — event ordering CAPTCHA format ├── shared.js # Browser-specific shared utilities ├── shared.css # Shared dark theme styles ├── tests/ # Test suite (Node.js built-in test runner) ├── README.md # This file └── LICENSE # MIT License ``` ## 🔮 未来研究方向 - **时序 CAPTCHA** — 需要理解跨帧的事件顺序 - **叙事惊喜检测** — 测试 AI 能否识别某事*为何*意外,而不仅仅是发生了*什么* - **多模型基准测试** — 将测试扩展到支持视频输入的 GPT-4o、Claude 3.5 Opus、Gemini 2.0 - **对抗性 GIF 生成** — 创建专门设计用于利用逐帧处理与连续处理差异的 GIF ## 📄 许可证 [MIT](LICENSE) — Saurav Bhattacharya ## 👤 作者 **Saurav Bhattacharya** - GitHub: [@sauravbhattacharya001](https://github.com/sauravbhattacharya001)
标签:AI安全, CAPTCHA, Chat Copilot, CMS安全, CSS3, DLL 劫持, DNS解析, Docker, GIF验证码, GitHub Actions, GNU通用公共许可证, GPT-4, HTML5, JavaScript, LLM, MITM代理, Node.js, npm, Unmanaged PE, Web安全, 人工智能, 人机交互, 人机验证, 后端开发, 后端开发, 后端开发, 图像识别, 图灵测试, 大语言模型, 安全防御评估, 对抗攻击, 开源项目, 敏感信息检测, 数据可视化, 暗色界面, 机器人识别, 案例研究, 深度学习, 用户体验, 用户模式Hook绕过, 网络安全, 自动笔记, 蓝队分析, 隐私保护, 验证码