2025-03-22 11:54:16 +03:00

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
}