{"adoption": {"forks": 522, "observed_at": "2026-08-28T04:08:59.607492+00:00", "stars": 4781}, "canonical_url": "https://ross.abutalabs.com/products/nginx-ultimate-bad-bot-blocker", "card": {"archived": false, "artifact_type": "plugin", "description": "Nginx Block Bad Bots, Spam Referrer Blocker, Vulnerability Scanners, User-Agents, Malware, Adware, Ransomware, Malicious Sites, with anti-DDOS, Wordpress Theme Detector Blocking and Fail2Ban Jail for Repeat Offenders", "domain": ["security", "web-development", "self-hosted"], "enriched": true, "function": ["security", "rate-limiting", "middleware"], "health_score": 80, "homepage": null, "language": "Shell", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["mitchellkrogza/nginx-ultimate-bad-bot-blocker"], "name": "mitchellkrogza/nginx-ultimate-bad-bot-blocker", "platform": ["self-hosted"], "pushed_at": "2026-08-26T23:07:03+00:00", "repo": "mitchellkrogza/nginx-ultimate-bad-bot-blocker", "stars": 4781, "tags": ["bot-blocking", "referrer-spam", "anti-ddos", "fail2ban", "nginx-config", "user-agent-filtering", "nginx", "linux", "web-server"], "topics": ["nginx", "nginx-server", "bot-blocker", "bots", "spam-blocker", "spambot-security", "spam-protection", "spam-filtering", "spam-prevention", "spam-referers", "porn-filter", "gambling-filter", "scanners", "vulnerability-scanners", "referer-blocker", "referrer-spam", "spyware", "adware", "malware", "spam-referrer-blocker"], "urls": [], "use_cases": ["block bad bots from my nginx site", "stop referrer spam in nginx access logs", "block fake googlebot user agents", "protect wordpress from theme detector scanners", "add anti-ddos rate limiting to nginx", "ban repeat offender IPs with fail2ban", "block vulnerability scanners hitting my server"], "what_it_is": "A drop-in Nginx configuration package that blocks bad bots, spam referrers, vulnerability scanners, malware, adware, and fake Googlebots, with anti-DDOS rate limiting and a Fail2Ban jail for repeat offenders. It ships generated blocklists (7,000+ bad referrers, 700 bad user-agents) and is maintained as a regularly updated release.", "when_to_avoid": ["you use Apache, Caddy, or a CDN/WAF instead of Nginx", "you need per-application, dynamic bot detection rather than static blocklists", "you cannot safely include large generated config files in your Nginx setup"], "when_to_choose": ["you run Nginx and want a maintained, ready-made blocklist config without writing your own rules", "you need to cut down bot traffic, spam referrers, and scanner noise at the web server level", "you want Fail2Ban integration for repeat offenders"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nginx-ultimate-bad-bot-blocker", "repo": "mitchellkrogza/nginx-ultimate-bad-bot-blocker", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "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:08:59.607492+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:59.607492+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:18:44.277362+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f3ac08d81dee204071763182339965cbe09cdef821b900892346231df69fddc", "fetched_at": "2026-08-28T04:08:59.607492+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3693, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}