{"adoption": {"forks": 132, "observed_at": "2026-08-28T04:04:57.301707+00:00", "stars": 1517}, "canonical_url": "https://ross.abutalabs.com/products/how-to-prevent-scraping", "card": {"archived": false, "artifact_type": "learning-resource", "description": "The ultimate guide on preventing Website Scraping", "domain": ["web-development", "security", "crawlers", "tutorials"], "enriched": true, "function": ["web-scraping", "security", "documentation"], "health_score": 20, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["JonasCz/How-To-Prevent-Scraping"], "name": "JonasCz/How-To-Prevent-Scraping", "platform": [], "pushed_at": "2023-12-08T08:20:29+00:00", "repo": "JonasCz/How-To-Prevent-Scraping", "stars": 1517, "tags": ["anti-scraping", "guide", "bot-mitigation", "rate-limiting", "anti-bot", "web-server"], "topics": [], "urls": [], "use_cases": ["prevent bots from scraping my website", "stop scrapers from stealing my content", "learn how web scrapers work", "block wget and curl from downloading my site", "protect website data from automated extraction", "anti-bot protection techniques for a website"], "what_it_is": "A comprehensive written guide on techniques for preventing or hindering website scraping, expanded from a Stack Overflow answer. It explains how different types of scrapers work and the trade-offs of blocking them without harming real users and search engines.", "when_to_avoid": ["you need up-to-date techniques, as the guide was written in 2017 and is partly obsolete", "you need a working tool or library rather than documentation", "you want to build a scraper rather than prevent one"], "when_to_choose": ["you want a conceptual overview of scraping prevention strategies", "you need to understand scraper types before choosing countermeasures", "you want a free, readable reference on anti-bot trade-offs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/how-to-prevent-scraping", "repo": "JonasCz/How-To-Prevent-Scraping", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "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:04:57.301707+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:57.301707+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:32:03.407770+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c74a39d15af14df8229bed7985775423e9925f0271479aafe6e7a97a6a9902e6", "fetched_at": "2026-08-28T04:04:57.301707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JonasCz/How-To-Prevent-Scraping"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3866, "days_push": 999, "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}}