wappalyzergo icon indicating copy to clipboard operation
wappalyzergo copied to clipboard

Add injectable javascript agent for technologies detection

Open Mzack9999 opened this issue 2 years ago • 2 comments

An always up-to-date javascript injectable library version should be prepared and kept up to date. The library should be injected via headless into existing browsers' contexts and collect enriched info within the JS engine for a specific domain open in a browser tab. This is similar to the behavior of the official wappalyzer extension https://chrome.google.com/webstore/detail/wappalyzer-technology-pro

Mzack9999 avatar Feb 06 '23 21:02 Mzack9999

Maybe can define a new function:

func FingerprintURL(url string) map[string]struct{} {
	// 1. Request URL and resolve HTML, CSS or JS.
	// 2. Detect and return result
}

Maybe it is not necessary to use the headless library, we can also use HTML parser like goquery.

Another question: Why use map[string]struct{} instead of []string as returned value?

Bisstocuz avatar Mar 10 '23 07:03 Bisstocuz

I'm actually confused right now, I thought I could feed both HTML and JS to the Fingerprint function and it would apply regexes directly. I simply used a headless browser to load a web page and get all the other loaded assets automatically, and I wanted to fingerprint everything that gets loaded, but it looks like wappalyzergo doesn't regex the raw javascript files I give it, it's only doing that on JS included inside HTML ?

I think the problem resides in the checkBody() function, as it always expects HTML and tries to tokenize it, if I give it a pure JS file it won't work.

Gby56 avatar Jun 09 '24 09:06 Gby56