{"id":44608237,"url":"https://github.com/sauravbhattacharya001/gif-captcha","last_synced_at":"2026-04-24T07:01:42.048Z","repository":{"id":212776614,"uuid":"732283232","full_name":"sauravbhattacharya001/gif-captcha","owner":"sauravbhattacharya001","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-21T18:47:07.000Z","size":2167,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-21T19:50:26.099Z","etag":null,"topics":["accessibility","animated-gif","anti-bot","bot-protection","captcha","captcha-generator","challenge-response","form-validation","gif","human-verification","javascript","nodejs","security","spam-prevention","web-security"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sauravbhattacharya001.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":"audit-log.html","citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-16T06:41:41.000Z","updated_at":"2026-04-21T18:47:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"21e49124-578a-4b92-8fd4-a12f079d2e6e","html_url":"https://github.com/sauravbhattacharya001/gif-captcha","commit_stats":null,"previous_names":["sauravbhattacharya001/gif-captcha"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/sauravbhattacharya001/gif-captcha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2Fgif-captcha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2Fgif-captcha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2Fgif-captcha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2Fgif-captcha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sauravbhattacharya001","download_url":"https://codeload.github.com/sauravbhattacharya001/gif-captcha/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sauravbhattacharya001%2Fgif-captcha/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32212808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility","animated-gif","anti-bot","bot-protection","captcha","captcha-generator","challenge-response","form-validation","gif","human-verification","javascript","nodejs","security","spam-prevention","web-security"],"created_at":"2026-02-14T11:25:49.490Z","updated_at":"2026-04-24T07:01:42.002Z","avatar_url":"https://github.com/sauravbhattacharya001.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🎞️ GIF CAPTCHA\n\n**Can animated GIFs distinguish humans from AI?**\n\nA research case study exploring GIF-based CAPTCHAs as a human-verification mechanism against large language models.\n\n[![CI](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/ci.yml/badge.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/sauravbhattacharya001/gif-captcha/graph/badge.svg)](https://codecov.io/gh/sauravbhattacharya001/gif-captcha)\n[![CodeQL](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/codeql.yml/badge.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/codeql.yml)\n[![Docker](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/docker.yml/badge.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/docker.yml)\n[![GitHub Pages](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/pages.yml/badge.svg)](https://github.com/sauravbhattacharya001/gif-captcha/actions/workflows/pages.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/v/gif-captcha)](https://www.npmjs.com/package/gif-captcha)\n![HTML](https://img.shields.io/badge/Built%20with-HTML%2FCSS%2FJS-orange)\n![GitHub repo size](https://img.shields.io/github/repo-size/sauravbhattacharya001/gif-captcha)\n![GitHub last commit](https://img.shields.io/github/last-commit/sauravbhattacharya001/gif-captcha)\n![GitHub issues](https://img.shields.io/github/issues/sauravbhattacharya001/gif-captcha)\n![GitHub stars](https://img.shields.io/github/stars/sauravbhattacharya001/gif-captcha)\n[![npm downloads](https://img.shields.io/npm/dm/gif-captcha)](https://www.npmjs.com/package/gif-captcha)\n![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\n[**View Live Demo →**](https://sauravbhattacharya001.github.io/gif-captcha/) · [**API Docs →**](https://sauravbhattacharya001.github.io/gif-captcha/docs/)\n\n\u003c/div\u003e\n\n---\n\n## 📖 Overview\n\nThis case study tests whether GIF-based CAPTCHAs — specifically those requiring comprehension of unexpected events in animated sequences — can serve as an effective human-verification mechanism against LLMs.\n\nGPT-4 was given 10 GIFs, each containing a narrative twist or unexpected event, and asked to *\"describe the unexpected event.\"* Human responses were collected as a baseline.\n\n## 🔬 Methodology\n\n| Component | Details |\n|-----------|---------|\n| **Model Tested** | GPT-4 (text-only, pre-vision) |\n| **Test Set** | 10 animated GIFs with unexpected narrative twists |\n| **Prompt** | *\"Describe the unexpected event\"* |\n| **Baseline** | Human descriptions collected for each GIF |\n| **Success Criteria** | AI must produce a semantically accurate description of the animated event |\n\n## 📊 Results\n\n**Score: 10/10 CAPTCHAs successfully blocked GPT-4**\n\n| # | GIF | Human Could Describe? | GPT-4 Could Describe? |\n|---|-----|:---:|:---:|\n| 1 | Duel plot twist | ✅ | ❌ |\n| 2 | Rappers roller skating | ✅ | ❌ |\n| 3 | Flying skateboarder | ✅ | ❌ |\n| 4 | Banana mascot dance-off | ✅ | ❌ |\n| 5 | Tic Tac Toe dog | ✅ | ❌ |\n| 6 | Parent dog sacrifice | ✅ | ❌ |\n| 7 | Mirror hand illusion | ✅ | ❌ |\n| 8 | Highway 180° drift | ✅ | ❌ |\n| 9 | Road rage hug | ✅ | ❌ |\n| 10 | Birthday cake face cover | ✅ | ❌ |\n\nGPT-4 responded identically to every test:\n\u003e *\"I currently cannot view animations, including animated GIFs, so I can't provide real-time descriptions of events within them.\"*\n\n## 🔑 Key Findings\n\n### 2023: GIF CAPTCHAs Were Effective\nText-only LLMs had zero ability to process animated visual content. GIF-based CAPTCHAs requiring narrative comprehension of animated sequences were a **100% effective** human-verification mechanism.\n\n### 2025 Update: The Landscape Has Changed\nMultimodal LLMs (GPT-4V, GPT-4o, Claude 3.5, Gemini 1.5 Pro) can now:\n- Describe static frames extracted from GIFs\n- Infer likely motion from visual context clues\n- Identify objects, people, and scenes\n\n**Simple visual recognition CAPTCHAs are no longer sufficient.** However, CAPTCHAs requiring understanding of **timing**, **narrative surprise**, and **comedic subversion** may still challenge AI systems that process frames independently rather than as continuous sequences.\n\n## 🚀 Live Demo\n\nThe interactive case study is deployed as a static page:\n\n**[sauravbhattacharya001.github.io/gif-captcha](https://sauravbhattacharya001.github.io/gif-captcha/)**\n\n### 🎮 Interactive CAPTCHA Demo\n\n**[Try the Demo →](https://sauravbhattacharya001.github.io/gif-captcha/demo.html)**\n\nTake the GIF CAPTCHA challenge yourself! The interactive demo:\n- Shows you each of the 10 GIFs with unexpected twists\n- Lets you type your own description of the unexpected event\n- Reveals how humans and GPT-4 answered after you submit\n- Tracks your \"humanity score\" across all challenges\n- Provides a detailed results summary comparing you to GPT-4's 0/10\n\n### 📊 Research Analysis Dashboard\n\n**[View Analysis →](https://sauravbhattacharya001.github.io/gif-captcha/analysis.html)**\n\nDeep dive into the research data with interactive visualizations:\n- **CAPTCHA Taxonomy** — 6 cognitive categories (Narrative Twist, Physical Comedy, Animal Behavior, Visual Trick, Social Subversion, Optical Illusion) with filter tabs\n- **Category \u0026 Difficulty Charts** — Canvas-rendered bar charts showing distribution and AI difficulty ratings (2023 vs 2025 estimates)\n- **Human vs AI Radar Chart** — 6-axis cognitive capability comparison (Temporal Sequencing, Narrative Surprise, Cultural Context, Motion Tracking, Humor Detection, Object Recognition)\n- **Multi-Model Comparison** — GPT-4, GPT-4o, Claude 3.5, and Gemini 1.5 Pro estimated scores per category\n- **AI Capability Timeline** — Evolution from 0/10 (2023) to projected future performance\n- **Per-GIF Analysis Cards** — Expandable breakdowns with difficulty meters, cognitive skills, and explanations of why each CAPTCHA works\n\n### 🛠️ CAPTCHA Workshop\n\n**[Open Workshop →](https://sauravbhattacharya001.github.io/gif-captcha/generator.html)**\n\nCreate your own custom GIF CAPTCHA challenge sets:\n- **Build** — Add GIF challenges with titles, URLs, expected answers, categories, and difficulty ratings\n- **Preview** — Test your CAPTCHA set as a user would experience it, with answer submission and reveal\n- **Export/Import** — Export as JSON, download as file, or generate shareable URL links\n- **Local Storage** — Auto-saves your work in the browser so you never lose progress\n- **Sample Set** — Load a pre-built set of 5 challenges to get started quickly\n\n### 🤖 AI Response Simulator\n\n**[Try Simulator →](https://sauravbhattacharya001.github.io/gif-captcha/simulator.html)**\n\nExplore how different AI models respond to each GIF CAPTCHA:\n- **5 AI Models** — GPT-4 (2023), GPT-4V (2023 Q4), GPT-4o (2024), Claude 3.5 (2024), Gemini 1.5 Pro (2024)\n- **Simulated Responses** — See exactly what each model would say for each CAPTCHA\n- **Capability Breakdown** — Per-CAPTCHA analysis of model capabilities vs. requirements (frame analysis, motion tracking, narrative comprehension, cultural context, humor detection, object recognition)\n- **Reasoning Explanations** — Why each model succeeds, partially succeeds, or fails\n- **Model × CAPTCHA Heatmap** — Pass/fail matrix across all models and CAPTCHAs\n- **Comparative Charts** — Stacked effectiveness bar chart and capability radar overlay\n- **Interactive Model Switching** — Click any model to see its full response set\n\n### ⏱️ Temporal Sequence Challenge\n\n**[Try Temporal Challenge →](https://sauravbhattacharya001.github.io/gif-captcha/temporal.html)**\n\nA harder CAPTCHA format testing temporal event ordering:\n- **Event Sequencing** — Watch each GIF and arrange 4 events in correct chronological order\n- **Drag \u0026 Drop + Buttons** — Reorder events by dragging or using arrow buttons (mobile-friendly)\n- **Kendall Tau Scoring** — Pairwise concordance scoring (0–100%) for partial credit on near-correct orderings\n- **Per-Challenge AI Analysis** — Why frame-by-frame AI processing fails at temporal sequencing\n- **Research Context** — Explores temporal CAPTCHAs as a next-generation human verification approach\n- **Results Dashboard** — Overall score, per-challenge breakdown with score bars, research implications\n\n### Case Study Page\n\nFeatures a dark-themed UI with:\n- Full results table with CAPTCHA pass/fail badges\n- Linked GIF sources for manual verification\n- Key findings with visual callouts\n\n### ⚡ Response Time Benchmark\n\n**[Try Benchmark →](https://sauravbhattacharya001.github.io/gif-captcha/benchmark.html)**\n\nMeasure how fast you can decode GIF CAPTCHAs with precision timing:\n- **Timed Challenges** — Each CAPTCHA is timed from display to correct answer submission\n- **Performance Metrics** — Track your average, best, and worst response times\n- **Speed Distribution** — See where your performance falls on the curve\n\n### 🧠 Cognitive Load Analyzer\n\n**[View Cognitive Load →](https://sauravbhattacharya001.github.io/gif-captcha/cognitive-load.html)**\n\nMeasure the cognitive complexity of GIF CAPTCHAs across 6 dimensions:\n- **6 Cognitive Dimensions** — Temporal sequencing, narrative surprise, cultural context, motion tracking, humor detection, object recognition\n- **Per-CAPTCHA Breakdown** — How cognitively demanding each challenge is\n- **Human vs AI Cognitive Profiles** — Compare what humans and AI find difficult\n\n### 📊 Multi-Model Comparison\n\n**[View Comparison →](https://sauravbhattacharya001.github.io/gif-captcha/comparison.html)**\n\nCompare AI model performance against GIF CAPTCHAs side by side:\n- **Multiple AI Models** — GPT-4, GPT-4V, GPT-4o, Claude 3.5, Gemini 1.5 Pro\n- **Per-Challenge Scoring** — Pass/fail breakdown for each model × CAPTCHA pair\n- **Capability Radar** — Visual overlay of model strengths and weaknesses\n\n### 📈 Effectiveness Dashboard\n\n**[View Effectiveness →](https://sauravbhattacharya001.github.io/gif-captcha/effectiveness.html)**\n\nHow well do GIF CAPTCHAs distinguish humans from AI models?\n- **Detection Rate Charts** — Human pass rate vs AI pass rate over time\n- **Effectiveness Metrics** — True positive, false positive, and discrimination power\n- **Model Evolution** — How AI capabilities have changed from 2023 to 2025\n\n### 🔥 Interaction Heatmap\n\n**[View Heatmap →](https://sauravbhattacharya001.github.io/gif-captcha/heatmap.html)**\n\nVisualize user interaction patterns during CAPTCHA solving:\n- **Click Heatmaps** — Where users click on GIFs during evaluation\n- **Mouse Trails** — Movement patterns revealing attention flow\n- **Timing Overlays** — Heat-coded response time data per region\n\n### 🧪 A/B Testing Configurator\n\n**[Open A/B Configurator →](https://sauravbhattacharya001.github.io/gif-captcha/abtest.html)**\n\nPlan and analyze CAPTCHA A/B experiments with statistical rigor:\n- **Experiment Design** — Configure test/control groups, sample sizes, and duration\n- **Statistical Analysis** — Chi-squared tests, confidence intervals, effect sizes\n- **Results Visualization** — Charts comparing variant performance\n\n### ♿ Accessibility Audit\n\n**[View Accessibility Audit →](https://sauravbhattacharya001.github.io/gif-captcha/accessibility.html)**\n\nEvaluate GIF CAPTCHA accessibility against WCAG 2.1 criteria:\n- **WCAG Compliance Checklist** — Perceivable, operable, understandable, robust\n- **Accessibility Scores** — Per-CAPTCHA accessibility ratings\n- **Remediation Suggestions** — How to improve CAPTCHA accessibility\n\n### 📋 Batch Validator\n\n**[Open Batch Validator →](https://sauravbhattacharya001.github.io/gif-captcha/batch.html)**\n\nImport response data and validate against challenges in bulk:\n- **Bulk Import** — Paste or upload JSON response datasets\n- **Automated Scoring** — Run all responses against challenge answer keys\n- **Pattern Analysis** — Identify common failure patterns and outliers\n\n### 🎯 Daily Challenge\n\n**[Play Daily Challenge →](https://sauravbhattacharya001.github.io/gif-captcha/daily.html)**\n\nA new GIF CAPTCHA challenge every day:\n- **Daily Rotation** — Fresh challenge each day from the full pool\n- **Streak Tracking** — Track your consecutive-day solving record\n- **Performance History** — Review your past daily challenge results\n\n### 🔗 Embed Widget Generator\n\n**[Create Embed →](https://sauravbhattacharya001.github.io/gif-captcha/embed.html)**\n\nGenerate embeddable GIF CAPTCHA widgets for your website:\n- **Configuration UI** — Set challenge count, difficulty, appearance, and callback URLs\n- **Code Generation** — Copy-paste HTML/JS embed snippets\n- **Preview** — See exactly how the widget will look before deploying\n\n### 🔍 Frame Inspector\n\n**[Open Frame Inspector →](https://sauravbhattacharya001.github.io/gif-captcha/frame-inspector.html)**\n\nAnalyze individual frames from GIF CAPTCHAs:\n- **Frame-by-Frame Scrubbing** — Step through each frame of a GIF animation\n- **Frame Metadata** — Display timing, dimensions, and pixel data\n- **AI Perspective** — See what an AI model \"sees\" when processing frames independently\n\n### 🏆 Leaderboard\n\n**[View Leaderboard →](https://sauravbhattacharya001.github.io/gif-captcha/leaderboard.html)**\n\nYour personal GIF CAPTCHA performance dashboard:\n- **Score Tracking** — Cumulative accuracy and speed scores\n- **Ranking System** — Compare against community benchmarks\n- **Achievement Badges** — Unlock badges for CAPTCHA-solving milestones\n\n### 🎲 Challenge Playground\n\n**[Open Playground →](https://sauravbhattacharya001.github.io/gif-captcha/playground.html)**\n\nCreate, test, and export custom GIF CAPTCHA challenge sets:\n- **Build Mode** — Add challenges with GIF URLs, answers, categories, and difficulty\n- **Test Mode** — Run through your challenge set as a user would\n- **Export** — Download as JSON or generate shareable links\n\n### 🔥 Streak Mode\n\n**[Play Streak Mode →](https://sauravbhattacharya001.github.io/gif-captcha/streak.html)**\n\nHow many GIFs can you describe in a row?\n- **Continuous Challenge** — Each wrong answer or timeout breaks your streak\n- **Increasing Difficulty** — Harder CAPTCHAs as your streak grows\n- **High Score Tracking** — Local storage persistence for best streaks\n\n### ⏱️ Response Time Analyzer\n\n**[View Timing Analysis →](https://sauravbhattacharya001.github.io/gif-captcha/timing.html)**\n\nAnalyze response time patterns across CAPTCHA types:\n- **Per-Category Timing** — Average solve times by cognitive category\n- **Time Distribution Charts** — Histogram of response times\n- **Outlier Detection** — Flag unusually fast (bot?) or slow responses\n\n### ⚡ Performance Profiler\n\n**[Open Profiler →](https://sauravbhattacharya001.github.io/gif-captcha/performance-profiler.html)**\n\nBenchmark CAPTCHA generation across configurations:\n- **Configurable Parameters** — Difficulty, frame count, image dimensions, noise level, text length\n- **Render Time Distribution** — Color-coded bar chart with P25/P75 quartile highlighting\n- **Key Metrics** — Average render time, P95 latency, file size, throughput (CAPTCHAs/sec), standard deviation\n- **Difficulty Comparison** — Side-by-side render time and file size charts across all difficulty levels\n- **Profile History** — Track and compare results from multiple benchmark runs with performance ratings\n\n## 🛠️ Tech Stack\n\n| Technology | Purpose |\n|-----------|---------|\n| HTML5 | Page structure |\n| CSS3 (Custom Properties) | Dark theme, responsive design |\n| JavaScript | Core CAPTCHA library (UMD, browser + Node.js) |\n| GitHub Pages | Hosting |\n| npm | Package distribution |\n\n## 📦 Installation\n\nInstall as an npm package for programmatic access to the CAPTCHA utilities:\n\n```bash\nnpm install gif-captcha\n```\n\n```javascript\nconst gifCaptcha = require(\"gif-captcha\");\n\n// Create a challenge\nconst challenge = gifCaptcha.createChallenge({\n  id: 1,\n  title: \"Surprise Ending\",\n  gifUrl: \"https://example.com/twist.gif\",\n  humanAnswer: \"The cat fell off the table unexpectedly\",\n});\n\n// Pick 5 random challenges from a pool\nconst selected = gifCaptcha.pickChallenges(challengePool, 5);\n\n// Validate a user's answer (fuzzy matching with Jaccard similarity)\nconst result = gifCaptcha.validateAnswer(\n  userAnswer,\n  challenge.humanAnswer,\n  { threshold: 0.3, requiredKeywords: [\"cat\", \"fell\"] }\n);\nconsole.log(result); // { passed: true, score: 0.75, hasKeywords: true }\n\n// Sanitize untrusted input for safe HTML rendering\nconst safe = gifCaptcha.sanitize('\u003cscript\u003ealert(\"XSS\")\u003c/script\u003e');\n```\n\nOr use via CDN in the browser:\n\n```html\n\u003cscript src=\"https://unpkg.com/gif-captcha/src/index.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  const challenge = gifCaptcha.createChallenge({ ... });\n  gifCaptcha.loadGifWithRetry(container, challenge);\n\u003c/script\u003e\n```\n\n## 📂 Project Structure\n\n```\ngif-captcha/\n├── src/\n│   ├── index.js                    # Core library (UMD — browser + Node.js)\n│   ├── shared-utils.js             # Shared utility functions (sanitize, LRU, etc.)\n│   ├── challenge-pool-manager.js   # Challenge pool lifecycle management\n│   ├── challenge-decay-manager.js  # Time-based challenge expiration\n│   ├── challenge-diversity-analyzer.js  # Pool diversity scoring\n│   ├── challenge-rotation-scheduler.js  # Automated rotation scheduling\n│   ├── challenge-template-engine.js     # Challenge template system\n│   ├── ab-experiment-runner.js     # A/B experiment runner\n│   ├── adaptive-difficulty-tuner.js # Dynamic difficulty adjustment\n│   ├── behavioral-biometrics.js    # Mouse/keyboard behavioral analysis\n│   ├── bot-signature-database.js   # Known bot signature matching\n│   ├── captcha-accessibility-analyzer.js # WCAG compliance analysis\n│   ├── captcha-anomaly-detector.js # Anomaly detection in solve patterns\n│   ├── captcha-audit-log.js        # Tamper-evident audit logging\n│   ├── captcha-capacity-planner.js # Load capacity planning\n│   ├── captcha-export-formatter.js # Multi-format data export\n│   ├── captcha-fatigue-detector.js # User fatigue detection\n│   ├── captcha-health-monitor.js   # System health monitoring\n│   ├── captcha-incident-manager.js # Security incident management\n│   ├── captcha-load-tester.js      # Load/stress testing\n│   ├── captcha-localization-manager.js # i18n locale management\n│   ├── captcha-rate-limiter.js     # Rate limiting\n│   ├── captcha-session-replay.js   # Session recording/replay\n│   ├── captcha-stats-collector.js  # Statistics collection\n│   ├── captcha-strength-scorer.js  # Challenge strength scoring\n│   ├── captcha-traffic-analyzer.js # Traffic pattern analysis\n│   ├── compliance-reporter.js      # Regulatory compliance reporting\n│   ├── config-validator.js         # Configuration validation\n│   ├── crypto-utils.js             # Cryptographic utilities\n│   ├── csv-utils.js                # CSV import/export\n│   ├── fraud-ring-detector.js      # Coordinated fraud detection\n│   ├── geo-risk-scorer.js          # Geographic risk scoring\n│   ├── honeypot-injector.js        # Honeypot field injection\n│   ├── i18n.js                     # Internationalization\n│   ├── response-time-profiler.js   # Response time analysis\n│   ├── session-risk-aggregator.js  # Session risk aggregation\n│   ├── solve-funnel-analyzer.js    # Solve funnel analysis\n│   ├── solve-pattern-fingerprinter.js # Solve pattern fingerprinting\n│   ├── trust-score-engine.js       # Trust score computation\n│   └── webhook-dispatcher.js       # Webhook event dispatch\n├── docs/\n│   ├── index.html                  # API reference (HTML)\n│   ├── getting-started.html        # Getting started guide\n│   └── architecture.html           # Architecture documentation\n├── tests/                          # Test suite (Node.js built-in test runner)\n│\n│   ── Interactive Pages ──\n├── index.html            # Interactive case study page\n├── demo.html             # Interactive CAPTCHA demo\n├── analysis.html         # Research analysis dashboard\n├── generator.html        # CAPTCHA Workshop — create challenge sets\n├── simulator.html        # AI Response Simulator\n├── temporal.html         # Temporal Sequence Challenge\n│\n│   ── Tools \u0026 Configurators ──\n├── abtest.html           # A/B Testing Configurator\n├── config.html           # Configuration editor\n├── designer.html         # CAPTCHA visual designer\n├── difficulty-planner.html # Difficulty planning tool\n├── embed.html            # Embed Widget Generator\n├── integration-wizard.html # Integration setup wizard\n├── playground.html       # Challenge Playground\n├── rotation-scheduler.html # Challenge rotation scheduler\n├── theme-builder.html    # Visual theme builder\n│\n│   ── Analytics \u0026 Dashboards ──\n├── dashboard.html        # Main analytics dashboard\n├── trust-dashboard.html  # Trust score dashboard\n├── effectiveness.html    # Effectiveness Dashboard\n├── cognitive-load.html   # Cognitive Load Analyzer\n├── comparison.html       # Multi-Model Comparison\n├── diversity-analyzer.html # Challenge diversity analysis\n├── heatmap.html          # Interaction Heatmap\n├── solve-histogram.html  # Solve time histogram\n├── timing.html           # Response Time Analyzer\n├── funnel.html           # Solve funnel visualization\n├── my-stats.html         # Personal statistics\n│\n│   ── Security \u0026 Monitoring ──\n├── audit-log.html        # Audit Log — browse, search \u0026 export records\n├── bot-or-human.html     # Bot-or-human classifier\n├── bot-signatures.html   # Bot signature database browser\n├── compliance.html       # Compliance reporting\n├── entropy.html          # Entropy/randomness analysis\n├── fleet.html            # Fleet management overview\n├── fraud-rings.html      # Fraud ring detection\n├── geo-risk-map.html     # Geographic risk visualization\n├── incident-timeline.html # Security incident timeline\n├── load-tester.html      # Load testing interface\n├── queue-manager.html    # Challenge queue management\n├── rate-limiter.html     # Rate limiter configuration\n├── resistance.html       # AI resistance scoring\n├── threat-feed.html      # Threat intelligence feed\n├── honeypot-designer.html # Honeypot trap designer with bot simulation \u0026 intel\n│\n│   ── User-Facing Features ──\n├── accessibility.html    # Accessibility Audit (WCAG 2.1)\n├── batch.html            # Batch Validator — bulk response analysis\n├── benchmark.html        # Response Time Benchmark\n├── competitive.html      # Competitive mode\n├── cost-calculator.html  # Cost estimation calculator\n├── daily.html            # Daily Challenge mode\n├── feedback.html         # User feedback collection\n├── fingerprint-explorer.html # Fingerprint Explorer\n├── frame-inspector.html  # GIF Frame Inspector\n├── gallery.html          # GIF gallery browser\n├── journey-map.html      # User journey visualization\n├── leaderboard.html      # Performance Leaderboard\n├── performance-profiler.html # Performance Profiler\n├── streak.html           # Streak Mode\n│\n│   ── Shared Assets ──\n├── shared.js             # Browser-specific shared utilities\n├── shared.css            # Shared dark theme styles\n├── API.md                # API reference (Markdown)\n├── SECURITY.md           # Security policy\n├── CONTRIBUTING.md       # Contribution guidelines\n├── README.md             # This file\n└── LICENSE               # MIT License\n```\n\n## 📖 API Reference\n\nSee **[API.md](API.md)** for complete documentation of all 13 factory functions and utility exports, including:\n\n- **Challenge Management** — `createChallenge`, `createAttemptTracker`, `createPoolManager`\n- **Analysis \u0026 Calibration** — `createSetAnalyzer`, `createDifficultyCalibrator`, `createSecurityScorer`\n- **Session \u0026 Security** — `createSessionManager`, `createTokenVerifier`\n- **Bot Detection \u0026 Reputation** — `createBotDetector`, `createReputationTracker`, `createChallengeRouter`\n\n## 🔮 Future Research Directions\n\n- **Temporal sequence CAPTCHAs** — Require understanding of event ordering across frames\n- **Narrative surprise detection** — Test whether AI can identify *why* something is unexpected, not just *what* happened\n- **Multi-model benchmarking** — Extend testing to GPT-4o, Claude 3.5 Opus, Gemini 2.0 with video input\n- **Adversarial GIF generation** — Create GIFs specifically designed to exploit frame-by-frame vs. continuous processing gaps\n\n## 📄 License\n\n[MIT](LICENSE) — Saurav Bhattacharya\n\n## 👤 Author\n\n**Saurav Bhattacharya**\n- GitHub: [@sauravbhattacharya001](https://github.com/sauravbhattacharya001)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsauravbhattacharya001%2Fgif-captcha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsauravbhattacharya001%2Fgif-captcha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsauravbhattacharya001%2Fgif-captcha/lists"}