{"adoption": {"forks": 239, "observed_at": "2026-08-28T04:04:30.529171+00:00", "stars": 1364}, "canonical_url": "https://ross.abutalabs.com/products/xspear", "card": {"archived": true, "artifact_type": "cli-tool", "description": "🔱 Powerfull XSS Scanning and Parameter analysis tool&gem", "domain": ["security", "penetration-testing", "web-development", "developer-tools"], "enriched": true, "function": ["vulnerability-scanning", "security", "cli", "penetration-testing"], "health_score": 10, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["hahwul/XSpear"], "name": "hahwul/XSpear", "platform": ["cli", "ruby", "cross-platform"], "pushed_at": "2026-03-03T08:54:02+00:00", "repo": "hahwul/XSpear", "stars": 1364, "tags": ["xss-scanner", "bugbounty", "pentest", "selenium", "headless-browser", "blind-xss", "ruby-gem", "archived"], "topics": ["xss", "hacking", "bugbounty", "pentest", "scanner", "tool", "gem", "ruby", "library", "scanning-xss", "selenium", "bugbountytips", "webhacking"], "urls": [], "use_cases": ["scan a website for reflected XSS vulnerabilities", "find injectable parameters in web app URLs", "test for XSS filter bypass with event handlers and special chars", "detect alert/confirm/prompt execution via headless browser", "run blind XSS tests with XSS Hunter or ezXSS endpoints", "analyze security headers like CSP and HSTS", "scan requests exported from Burp Suite or ZAP raw files", "integrate XSS scanning into Ruby code or CI pipelines"], "what_it_is": "XSpear is a Ruby-based XSS (cross-site scripting) scanner and parameter analysis tool distributed as a gem, usable both as a CLI and as a Ruby library. It performs pattern-matching and headless-browser (Selenium) detection of XSS payloads, filter bypass tests, blind XSS checks, and security header analysis. The repository has been archived and is no longer maintained; the author recommends Dalfox instead.", "when_to_avoid": ["you need an actively maintained tool - the repo is archived and read-only", "you want the fastest or most feature-rich XSS scanner - use Dalfox instead", "you are not comfortable installing Ruby gems and Selenium dependencies", "you need non-web vulnerability scanning"], "when_to_choose": ["you need a Ruby-native XSS scanner usable as a gem library", "you want parameter analysis plus XSS testing in one CLI tool", "you need JSON or HTML scan reports for bug bounty triage", "you want to test blind XSS with callback URLs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xspear", "repo": "hahwul/XSpear", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "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:30.529171+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.529171+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:41:20.989265+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2e1f32f8141168f37d44e4dc591dca31b0bd61286c9a4d4254b6944372051353", "fetched_at": "2026-08-28T04:04:30.529171+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hahwul/XSpear"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 70, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2609, "days_push": 183, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}