{"adoption": {"forks": 829, "observed_at": "2026-08-28T04:07:39.523754+00:00", "stars": 3046}, "canonical_url": "https://ross.abutalabs.com/products/aswan", "card": {"archived": false, "artifact_type": "service", "description": "陌陌风控系统静态规则引擎，零基础简易便捷的配置多种复杂规则，实时高效管控用户异常行为。", "domain": ["security", "backend", "web-development", "developer-tools"], "enriched": true, "function": ["security", "rate-limiting", "web-framework", "configuration-management", "logging"], "health_score": 20, "homepage": null, "language": "Python", "license": "LGPL-2.1", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["momosecurity/aswan"], "name": "momosecurity/aswan", "platform": ["python", "self-hosted"], "pushed_at": "2021-06-15T12:35:55+00:00", "repo": "momosecurity/aswan", "stars": 3046, "tags": ["risk-control", "antifraud", "rule-engine", "fraud-detection", "django", "blacklist", "whitelist", "frequency-control", "docker", "linux", "web-server"], "topics": ["risk-control", "antifraud", "risk-management"], "urls": [], "use_cases": ["block fraudulent user behavior in real time", "configure blacklists and whitelists for user IDs, IPs, and devices", "limit how many times a device can perform an action per day", "build custom risk rules without coding", "detect abnormal accounts based on login history", "manage risk-control rules across multiple projects"], "what_it_is": "Aswan is Momo's open-source risk-control static rule engine, a self-hosted Python/Django service for configuring blacklist/whitelist, boolean, frequency-limit, and user-count rules to block abnormal user behavior in real time. It provides a web admin console for rule and list management and depends on MySQL, Redis, and MongoDB.", "when_to_avoid": ["you need a full real-time streaming/ML-based fraud detection system rather than static rules", "you require active maintenance and recent releases (last release was 2021)", "your stack is not Python or you cannot operate MySQL, Redis, and MongoDB"], "when_to_choose": ["you need a self-hosted, zero-code rule engine for anti-fraud and risk control", "you want a web console to let non-engineers configure complex risk rules", "you need dimension-based lists (user, IP, device, phone, payment account) with black/white/gray semantics"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/aswan", "repo": "momosecurity/aswan", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "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:07:39.523754+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.523754+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:28:56.843687+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "60e1ce1c57dedf1afd058986d58d667bf1f9bd27a0d5922887e8a7baa4edc94f", "fetched_at": "2026-08-28T04:07:39.523754+00:00", "kind": "readme", "missing": false, "url": "https://github.com/momosecurity/aswan"}], "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": 2637, "days_push": 1905, "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}}