50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package pwextractor
|
|
|
|
import (
|
|
_ "embed"
|
|
"errors"
|
|
"fmt"
|
|
"github.com/labstack/gommon/log"
|
|
"github.com/scrapinghub/adblockgoparser"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
//go:embed blocklists/easylist.txt
|
|
var easyList string
|
|
|
|
//go:embed blocklists/easyprivacy.txt
|
|
var easyPrivacy string
|
|
|
|
var ruleSet *adblockgoparser.RuleSet
|
|
|
|
func init() {
|
|
ruleSet = adblockgoparser.CreateRuleSet()
|
|
for _, list := range []string{easyList, easyPrivacy} {
|
|
for _, rec := range strings.Split(list, "\n") {
|
|
rule, err := adblockgoparser.ParseRule(rec)
|
|
if err != nil {
|
|
if !errors.Is(err, adblockgoparser.ErrSkipComment) &&
|
|
!errors.Is(err, adblockgoparser.ErrUnsupportedRule) &&
|
|
!errors.Is(err, adblockgoparser.ErrSkipHTML) &&
|
|
!errors.Is(err, adblockgoparser.ErrEmptyLine) {
|
|
panic(fmt.Sprintf("Adblock rule parse: %v", err))
|
|
}
|
|
continue
|
|
}
|
|
ruleSet.AddRule(rule)
|
|
}
|
|
}
|
|
}
|
|
|
|
func allowAdblock(url *url.URL) bool {
|
|
req := adblockgoparser.Request{
|
|
URL: url,
|
|
}
|
|
allow := ruleSet.Allow(&req)
|
|
if !allow {
|
|
log.Infof("Adblock blocked %s", url.String())
|
|
}
|
|
return allow
|
|
}
|