{"adoption": {"forks": 235, "observed_at": "2026-08-28T04:03:50.099854+00:00", "stars": 1165}, "canonical_url": "https://ross.abutalabs.com/products/verification_code", "card": {"archived": false, "artifact_type": "library", "description": "验证码研究破解心得记录。包含网易易盾，阿里云验证码，极验验证码，通用汉字识别，梦幻西游验证等主流验证码破解。包含点按验证码、点选验证、语序点选等等。已更新极验验证码、企业公示网/工商/文书采集系统、极验打码接口。", "domain": ["computer-vision", "crawlers", "machine-learning", "security"], "enriched": true, "function": ["computer-vision", "machine-learning", "web-scraping", "ocr", "deep-learning"], "health_score": 20, "homepage": null, "language": "C", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["WebSpiderUtils/verification_code"], "name": "WebSpiderUtils/verification_code", "platform": ["python"], "pushed_at": "2023-12-26T09:30:11+00:00", "repo": "WebSpiderUtils/verification_code", "stars": 1165, "tags": ["captcha-cracking", "captcha-recognition", "geetest", "yidun", "yolo-v3", "darknet", "chinese-character-recognition", "click-captcha", "slider-captcha", "web-crawling", "linux", "gpu"], "topics": [], "urls": [], "use_cases": ["crack geetest captcha validate parameter", "recognize chinese characters in click captcha", "train yolo model to locate captcha characters", "solve netease yidun captcha", "build dataset for captcha character recognition", "bypass slider captcha with machine learning"], "what_it_is": "A research repository documenting approaches and code for solving mainstream CAPTCHA systems such as Geetest, NetEase Yidun, and Aliyun CAPTCHA, including click-based, character-order, and slider types. It includes YOLO-based Chinese character detection and classification models with training handbooks and datasets for local CAPTCHA recognition.", "when_to_avoid": ["you need a production-ready commercial CAPTCHA solving service - the demo API is closed and usage is restricted to learning", "you need actively maintained code - many items are unfinished and updates have stalled", "you need a turnkey solution for all CAPTCHA types - slider trajectories and some models are incomplete"], "when_to_choose": ["you are researching CAPTCHA security or building recognition models for click-based Chinese character CAPTCHAs", "you need training handbooks and datasets for CAPTCHA object detection and classification", "you want documented reverse-engineering notes for Geetest front-end JS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/verification_code", "repo": "WebSpiderUtils/verification_code", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:50.099854+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:29:20.230911+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ad305eda9c5fc53a5fdfaa218439b27b06dc3621bd13815515478a6eb5550218", "fetched_at": "2026-08-28T04:03:50.099854+00:00", "kind": "readme", "missing": false, "url": "https://github.com/WebSpiderUtils/verification_code"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2361, "days_push": 981, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}