Updated Jul 14, 2026

Discovery

Fingerprint CMS and frameworks across host lists

webanalyze is a Go port of Wappalyzer that uncovers the technologies behind websites by matching responses against technology fingerprints, engineered to test huge lists of hosts performantly.

installgo install -v github.com/rverton/webanalyze/cmd/webanalyze@latest

Go · MIT license

Agent

overview

What webanalyze does

webanalyze matches response headers, cookies, HTML, and scripts against an -apps definition file (technologies.json by default). Feed -host or -hosts; raise -worker for concurrent passes; emit stdout, csv, or json with -output.

Reach for it after subdomain discovery and liveness probing, when you need a technology map across many hosts rather than a deep single-site crawl. Use -crawl to follow a few links past the root when signatures only load on inner pages.

Trickest provides webanalyze as a managed Discovery node: host list in, folder and file out. Prefer httpx when liveness and light tech detection should share one probe. Prefer upstream Wappalyzer for deeper recursive analysis of one site.

source github.com/rverton/webanalyze

use cases

Where webanalyze fits

Fingerprint a large host list fast

Feed a file of hosts and let webanalyze fingerprint each one concurrently, raising the worker count to build a technology inventory for the whole estate in a single pass.

Identify the CMS behind each host

Report which sites run WordPress, Drupal, Adobe Experience Manager, or another platform, so you can group targets by stack and prioritize the ones that matter.

Emit structured results for the pipeline

Choose CSV or JSON output so the detected technologies feed a database node or a routing step instead of scrolling past in a console.

Crawl a few links per host

Set a small crawl depth so detection catches libraries and frameworks that only load on pages past the root.

reference

webanalyze inputs and flags

7 inputs
NameTypeFlagDescription
hostSTRING-hostSingle host to test.
hostsFILE-hostsFilename with hosts, one host per line.
output-formatSTRING-outputOutput format: stdout, csv, or json (default stdout).
workersSTRING-workerNumber of workers to run in parallel (default 4).
crawlSTRING-crawlLinks to follow from the root page (default 0).
app-definition-fileFILE-appsApp definition file with technology signatures (default technologies.json).

Showing key inputs. webanalyze exposes 7 inputs in total.

Full flag reference (7 inputs)
NameTypeFlagDescription
hostSTRING-hostSingle host to test.
crawlSTRING-crawlLinks to follow from the root page (default 0).
hostsFILE-hostsFilename with hosts, one host per line.
workersSTRING-workerNumber of workers to run in parallel (default 4).
output-formatSTRING-outputOutput format: stdout, csv, or json (default stdout).
search-all-urlsBOOLEAN-searchSearch all URLs on the same base domain, e.g. example.com and sub.example.com (default true).
app-definition-fileFILE-appsApp definition file with technology signatures (default technologies.json).

example

Run webanalyze

webanalyze · command
# fingerprint a host list as JSON, crawling one link deep
webanalyze -hosts hosts.txt -worker 8 -output json -crawl 1
sample output
http://example.com (0.38s):
    Cloudflare,  (CDN)
    Nginx,  (Web servers)
    Adobe Experience Manager,  (CMS)
    jQuery, 3.7.1 (JavaScript libraries)
    Java,  (Programming languages)
http://shop.example.com (0.52s):
    Nginx,  (Web servers)
    React, 18.2.0 (JavaScript frameworks)
    Webpack,  (Miscellaneous)

guidance

Choosing webanalyze

Use webanalyze when you need Wappalyzer-style fingerprinting across many hosts. For deep recursive analysis of a single site, prefer Wappalyzer. For liveness plus inline tech detection, use httpx.

wappalyzer

Original Node tool. Deeper recursive analysis of one site; webanalyze favors bulk host lists.

whatweb

Plugin-based identifier with aggression levels. Broader recon framing, similar detection goal.

httpx

Probes liveness and runs tech detection inline, so one node both filters and fingerprints.

faq

webanalyze questions

webanalyze reimplements Wappalyzer signature matching in Go for concurrent host-list runs. It reads the same technologies.json catalog via -apps. Wappalyzer stays stronger for deep recursive analysis of one site.

Yes, when a signature exists in the -apps definition file. It reports CMS, frameworks, libraries, and servers from each response. Version appears only when the fingerprint carries it.

stdout, csv, and json via -output. Pick csv or json when results need to feed a filter, database node, or downstream scanner.

Pass a file with -hosts and raise -worker for parallel fingerprints. Keep -crawl small if you need inner-page libraries; each extra link costs requests per host.

Default is technologies.json through -apps. On Trickest the node ships a bundled definition set. Point -apps at your own file only when you maintain custom signatures.

Set -crawl to follow that many links from the root. Keep -search on to include URLs on the same base domain. Both help catch technologies that load only on inner pages.

Run webanalyze yourself

A host list is probed live by httpx, then webanalyze fingerprints each one and writes the technology map as a queryable output.

Facts on this page come from the live Trickest tool library.