func NewWebAnalyzer(apps io.Reader, client *http.Client) (*WebAnalyzer, error) {
	wa := new(WebAnalyzer)
	if err := wa.loadApps(apps); err != nil {
		return nil, err
	}
	wa.client = client
	return wa, nil
}
NewWebAnalyzer initializes webanalyzer by passing a reader of the
app definition and an schedulerChan, which allows the scanner to
add scan jobs on its own
package webanalyze
import (
	"bytes"
	"crypto/tls"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"net/url"
	"strings"
	"time"
	"github.com/PuerkitoBio/goquery"
	"github.com/bobesa/go-domain-util/domainutil"
)
const VERSION = "1.0"
var (
	timeout = 8 * time.Second
	wa      *WebAnalyzer
)
type Result struct {
	Host     string        `json:"host"`
	Matches  []Match       `json:"matches"`
	Duration time.Duration `json:"duration"`
	Error    error         `json:"error"`
}
type Match struct {
	App     `json:"app"`
	AppName string     `json:"app_name"`
	Matches [][]string `json:"matches"`
	Version string     `json:"version"`
}
type WebAnalyzer struct {
	appDefs   *AppsDefinition
	scheduler chan *Job
	client    *http.Client
}
func (m *Match) updateVersion(version string) {
	if version != "" {
		m.Version = version
	}
}