Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
W

wappalyzergo

> 编程语言
Open source

A high performance go implementation of Wappalyzer Technology Detection Library

1.1K stars0 likes0 views
WebsiteGitHub

About

A high performance go implementation of Wappalyzer Technology Detection Library

Wappalyzergo

A high performance port of the Wappalyzer Technology Detection Library to Go. Inspired by Webanalyze.

Uses data from

  • https://github.com/enthec/webappanalyzer
  • https://github.com/HTTPArchive/wappalyzer

Features

  • Very simple and easy to use, with clean codebase.
  • Normalized regexes + auto-updating database of wappalyzer fingerprints.
  • Optimized for performance: parsing HTML manually for best speed.

Using go install

bash
go install -v github.com/projectdiscovery/wappalyzergo/cmd/update-fingerprints@latest

After this command wappalyzergo library source will be in your current go.mod.

Example

Usage Example:

go
package main

import (
	"fmt"
	"io"
	"log"
	"net/http"

	wappalyzer "github.com/projectdiscovery/wappalyzergo"
)

func main() {
	resp, err := http.DefaultClient.Get("https://www.hackerone.com")
	if err != nil {
		log.Fatal(err)
	}
	data, _ := io.ReadAll(resp.Body) // Ignoring error for example

	wappalyzerClient, err := wappalyzer.New()
	fingerprints := wappalyzerClient.Fingerprint(resp.Header, data)
	fmt.Printf("%v\n", fingerprints)

	// Output: map[Acquia Cloud Platform:{} Amazon EC2:{} Apache:{} Cloudflare:{} Drupal:{} PHP:{} Percona:{} React:{} Varnish:{}]
}

Optional runtime detection

Fingerprint still uses only the response headers and body. Use FingerprintWithRuntime to also check JavaScript properties, the rendered DOM, and script content. The optional headless adapter works with a Rod page that the caller has already loaded. The caller remains responsible for launching, navigating, and closing the browser.

go
collector := headless.New(page)

fingerprints, err := wappalyzerClient.FingerprintWithRuntime(
	ctx, resp.Header, data,
	wappalyzer.RuntimeOptions{
		Collector: collector,
		Timeout:   10 * time.Second,
	},
)

If runtime collection returns an error, the result still includes passive matches and any matches found before the failure. Other browser integrations can implement wappalyzer.RuntimeCollector without importing the Rod adapter.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Go

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言