tianai-captcha
CLAUDE.md1.3k starsChanged 9 months agoApache-2.0View on GitHub
必须用中文回复我 ## Project Overview tianai-captcha (天爱验证码/TAC) is a Java-based behavioral CAPTCHA library supporting multiple verification types: - SLIDER: Slide-to-fit puzzle captcha - ROTATE: Rotation verification captcha - CONCAT: Slide-to-restore captcha - **WORDIMAGECLICK**: Text-click verification captcha The project is a multi-module Maven project with Java 8 compatibility. ImageCaptchaApplication (cloud.tianai.captcha.application.ImageCaptchaApplication) - Main entry point for captcha operations - Handles captcha generation via generateCaptcha(type) - Handles validation via matching(id, matchParam) - Manages lifecycle of generators, validators, and cache TACBuilder (cloud.tianai.captcha.application.TACBuilder) - Builder pattern…
We split this CLAUDE.md into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 150
Default: Base64ImageTransform (JPG for background, PNG for template)
- Distinctive: line 156
Use TACBuilder to configure:
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. 必须用中文回复我
Project Overview
tianai-captcha (天爱验证码/TAC) is a Java-based behavioral CAPTCHA library supporting multiple verification types:
- SLIDER: Slide-to-fit puzzle captcha
- ROTATE: Rotation verification captcha
- CONCAT: Slide-to-restore captcha
- WORD_IMAGE_CLICK: Text-click verification captcha
The project is a multi-module Maven project with Java 8 compatibility.
Build Commands
# Build the entire project (skips tests by default)
mvn clean install
# Build without skipping tests
mvn clean install -DskipTests=false
# Build specific module
cd tianai-captcha
mvn clean install
# Package for deployment
mvn clean package
# Generate javadoc
mvn javadoc:javadocTesting
# Run all tests
mvn test
# Run tests for specific module
cd tianai-captcha
mvn test
# Run a specific test class
mvn test -Dtest=TACBuilderTest
# Run a specific test method
mvn test -Dtest=TACBuilderTest#testMethodProject Structure
Modules
- tianai-captcha (core module)
- Core captcha generation and validation logic
- Generator implementations for each captcha type
- Resource management system
- Cache and storage abstractions
- tianai-captcha-springboot-starter
- Spring Boot auto-configuration
- Redis integration support
- Configuration properties binding
- tianai-captcha-solon-plugin
- Solon framework integration
- tianai-captcha-web-sdk
- Frontend JavaScript SDK
Core Architecture
Key Components
ImageCaptchaApplication (cloud.tianai.captcha.application.ImageCaptchaApplication)
- Main entry point for captcha operations
- Handles captcha generation via
generateCaptcha(type) - Handles validation via
matching(id, matchParam) - Manages lifecycle of generators, validators, and cache
TACBuilder (cloud.tianai.captcha.application.TACBuilder)
- Builder pattern for constructing ImageCaptchaApplication
- Fluent API for configuration
- Key methods:
addDefaultTemplate(): Load built-in templatesaddResource(type, resource): Add background imagesaddTemplate(type, resourceMap): Add custom templatesaddFont(resource): Add fonts for WORD_IMAGE_CLICKcached(size, waitTime, period, expireTime): Enable pre-generation cachesetCacheStore(store): Set cache implementation (local or distributed)setResourceStore(store): Set resource storagesetTransform(transform): Set image transformation (default: Base64)
Generator Layer
MultiImageCaptchaGenerator (cloud.tianai.captcha.generator.impl.MultiImageCaptchaGenerator)
- Delegates to specific generators based on captcha type
- Manages resource loading and image transformation
Specific Generators:
StandardSliderImageCaptchaGenerator: Generates slider puzzlesStandardRotateImageCaptchaGenerator: Generates rotation captchasStandardConcatImageCaptchaGenerator: Generates slide-to-restore captchasStandardWordClickImageCaptchaGenerator: Generates text-click captchas
CacheImageCaptchaGenerator (cloud.tianai.captcha.generator.impl.CacheImageCaptchaGenerator)
- Wrapper that pre-generates captchas for improved performance
- Configurable cache size and refresh intervals
Validator Layer
ImageCaptchaValidator (cloud.tianai.captcha.validator.ImageCaptchaValidator)
- Interface for captcha validation logic
- Default implementation:
SimpleImageCaptchaValidator
BasicCaptchaTrackValidator (cloud.tianai.captcha.validator.impl.BasicCaptchaTrackValidator)
- Validates mouse/touch track data
- Checks for suspicious behavior patterns
Resource Management
ResourceStore (cloud.tianai.captcha.resource.ResourceStore)
- Abstraction for storing captcha resources (images, templates)
- Implementations:
LocalMemoryResourceStore: In-memory storage- Custom implementations for distributed scenarios
ImageCaptchaResourceManager (cloud.tianai.captcha.resource.ImageCaptchaResourceManager)
- Manages resource loading and retrieval
- Default implementation:
DefaultImageCaptchaResourceManager
Resource (cloud.tianai.captcha.resource.common.model.dto.Resource)
- Represents a resource with type and location
- Types: "classpath", "file", "url"
Cache Layer
CacheStore (cloud.tianai.captcha.cache.CacheStore)
- Abstraction for caching captcha data
- Implementations:
LocalCacheStore: Local in-memory cache- Redis-based implementation in Spring Boot starter
Image Transformation
ImageTransform (cloud.tianai.captcha.generator.ImageTransform)
- Converts generated images to desired format
- Default:
Base64ImageTransform(JPG for background, PNG for template)
Configuration
Non-Spring Projects
Use TACBuilder to configure:
ImageCaptchaApplication app = TACBuilder.builder()
.addDefaultTemplate()
.addResource("SLIDER", new Resource("classpath", "path/to/image.jpg"))
.cached(20, 5000, 2000, 120000L)
.build();Spring Boot Projects
Configure via application.yml:
captcha:
prefix: captcha # Cache key prefix
expire:
default: 120000 # Default expiration (ms)
WORD_IMAGE_CLICK: 180000 # Type-specific expiration
init-default-resource: false # Load built-in resources
local-cache-enabled: true # Enable pre-generation cache
local-cache-size: 20 # Cache size
local-cache-wait-time: 5000 # Wait time on cache miss (ms)
local-cache-period: 2000 # Cache refresh interval (ms)
font-path: # Font files for WORD_IMAGE_CLICK
- classpath:font/simhei.ttfImportant Constants
CaptchaTypeConstant (cloud.tianai.captcha.common.constant.CaptchaTypeConstant)
SLIDER: Slide-to-fit captchaROTATE: Rotation captchaCONCAT: Slide-to-restore captchaWORD_IMAGE_CLICK: Text-click captcha
ParamKeyEnum (cloud.tianai.captcha.generator.common.model.dto.ParamKeyEnum)
TOLERANT: Configurable tolerance value for validation (added in recent commit)
Key Data Flow
Generation Flow
- Client calls
ImageCaptchaApplication.generateCaptcha(type) MultiImageCaptchaGeneratorselects appropriate generator- Generator loads resources via
ImageCaptchaResourceManager - Generator creates captcha with random parameters
ImageTransformconverts images to Base64 (or custom format)- Captcha data cached in
CacheStorewith unique ID - Returns
ImageCaptchaVOwith ID and image data
Validation Flow
- Client submits ID and track data via
matching(id, matchParam) - Application retrieves cached captcha data by ID
ImageCaptchaValidatorvalidates track against expected answerBasicCaptchaTrackValidatorchecks track behavior patterns- Returns
ApiResponsewith success/failure status
Extension Points
- Custom Generators: Implement
ImageCaptchaGeneratorinterface - Custom Validators: Implement
ImageCaptchaValidatorinterface - Custom Cache: Implement
CacheStore(e.g., Redis, Memcached) - Custom Resources: Implement
ResourceStorefor centralized resource management - Custom Transform: Implement
ImageTransformfor different image formats - Interceptors: Implement
CaptchaInterceptorfor pre/post processing
Recent Changes
- Added support for Spring Boot 4 (commit: db0603a, 7c8730f)
- Fixed resource leak issues (commits: 16e517c, 29279e8)
- Added configurable tolerance value via
ParamKeyEnum.TOLERANT(commit: a4f8a99)
Documentation
- Online Demo: http://captcha.tianai.cloud
- Online Documentation: http://doc.captcha.tianai.cloud
- License: MulanPSL-2.0
Trending
Quiet this year.thin dataabout the whole repository
Who's talking about dromara/tianai-captcha
The biggest 1 of 1 mention linking to the repository that our crawl found. Each line is their own headline.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

