{"adoption": {"forks": 536, "observed_at": "2026-08-28T04:09:10.833431+00:00", "stars": 5116}, "canonical_url": "https://ross.abutalabs.com/products/hakrawler", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Simple, fast web crawler designed for easy, quick discovery of endpoints and assets within a web application", "domain": ["security", "penetration-testing", "osint", "web-development"], "enriched": true, "function": ["web-scraping", "cli", "http-client"], "health_score": 78, "homepage": "https://hakluke.com", "language": "Go", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["hakluke/hakrawler"], "name": "hakluke/hakrawler", "platform": ["windows", "cli", "go"], "pushed_at": "2026-08-05T04:05:39+00:00", "repo": "hakluke/hakrawler", "stars": 5116, "tags": ["bug-bounty", "recon", "endpoint-discovery", "javascript-discovery", "stdin-pipeline", "gocolly", "command-line", "linux", "macos", "docker"], "topics": ["bugbounty", "crawling", "hacking", "osint", "pentesting", "recon", "reconnaissance"], "urls": [], "use_cases": ["crawl a website to discover endpoints and assets", "find javascript files on a target domain for bug bounty recon", "pipe subdomains from httpx into a crawler to enumerate urls", "discover hidden paths and forms during penetration testing", "gather urls from a list of domains quickly from the command line", "crawl a site through a proxy for traffic inspection"], "what_it_is": "Hakrawler is a fast command-line web crawler written in Go, built on the Gocolly library, that discovers URLs and JavaScript file locations from web applications. It reads URLs from stdin and fits naturally into Unix pipelines for reconnaissance workflows.", "when_to_avoid": ["you need a full-featured crawler with rendering of JavaScript-heavy SPAs", "you want a GUI or interactive crawling experience", "you need polite, rate-limited crawling of sites you don't own without careful configuration"], "when_to_choose": ["you need fast, scriptable endpoint discovery in a recon pipeline", "you want a lightweight stdin/stdout tool that chains with httpx or subfinder", "you're doing bug bounty or pentest reconnaissance and need URL and JS file discovery"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hakrawler", "repo": "hakluke/hakrawler", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "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:09:10.833431+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.833431+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:02:07.436909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77a92dc8ce1f64b439711d6e7a3213b5fbc237f751b3cdeca216b7dca9ed832", "fetched_at": "2026-08-28T04:09:10.833431+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hakluke/hakrawler"}, {"content_hash": "90fbf5cfa12440b7f3fbc9117a70ed03b840e829f2e365d78c017d1953f6ddf3", "fetched_at": "2026-08-29T08:56:47.263656+00:00", "kind": "homepage", "missing": false, "url": "https://hakluke.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2453, "days_push": 28, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}