Skip to content

Instantly share code, notes, and snippets.

@PaulSec
Last active April 11, 2021 13:30
Show Gist options
  • Save PaulSec/2a9b84dfbc93aff489e8fa666105cc1c to your computer and use it in GitHub Desktop.
Save PaulSec/2a9b84dfbc93aff489e8fa666105cc1c to your computer and use it in GitHub Desktop.
Wappalyzergo as a Service
package main
import (
"crypto/tls"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
wappalyzer "github.com/projectdiscovery/wappalyzergo"
)
func main() {
r := gin.Default()
r.GET("/scan", func(c *gin.Context) {
website := c.Query("url")
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
resp, err := http.DefaultClient.Get(website)
if err != nil {
c.JSON(500, gin.H{
"message": "Error while trying to reach " + website,
})
// log.Fatal(err)
}
data, _ := ioutil.ReadAll(resp.Body) // Ignoring error for example
wappalyzerClient, err := wappalyzer.New()
fingerprints := wappalyzerClient.Fingerprint(resp.Header, data)
// fmt.Printf("%v\n", fingerprints)
keys := make([]string, 0, len(fingerprints))
for key := range fingerprints {
keys = append(keys, key)
}
c.JSON(200, gin.H{
"technologies": keys,
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment