Safari Content Blocker(Webkit Content Blockers)

1. 为什么safari要用content blockers 而不继续使用extension了?

虽然Extension能够做到同样的事情,但是相对来说,content blockers效率更高,性能更好。而且,Content Blocker不会像Extension一样,在一些情况下,带来内存的严重耗损。


2. 怎么编写一个Blocker?

每个Blocker都由一组"[]"来表示,方括号中包含了你要屏蔽的各种规则,如下图一所示:

    [
        {
            "trigger": {
                "url-filter": "evil-tracker\\.js"
            },
            "action": {
                "type": "block"
            }
        },
        {
            "trigger": {
                "url-filter": ".*",
                "resource-type": ["image", "style-sheet"]
                "unless-domain": ["reputable-content-server.com"]
            },
            "action": {
                "type": "block-cookies"
            }
        }
    ]

图一
每组规则又由一组"{}"来表示,里面包含了你要触发的条件"trigger",以及触发后要对内容做的处理"action"。
其中触发条件的关键字包括:
"url-filter"( 值为string类型,此关键字必须包含):匹配的资源的url,url是支持正则表达式的;
"url-filter-is-case-sensitive"(值为boolean类型,可选):设置"url-filter"匹配的时候是否大小写敏感,默认值是不敏感的;
"resource-type" (值为一组string,可选):匹配的资源的类型,如"document","image","style-sheet","script","font","raw","sag-document","media","popup"。因为,触发器是在载入页面之前进行的匹配,所以类型的匹配不是这个资源本身定义的类型,而是浏览器引擎使用这个资源的类型,如"<img src="something.css">"会被识别为"image";
"load-type"(值为一组string,可选):匹配页面与当前资源链接之间的关系,这个值只有两种类型:1. "first-party:",表示资源来自于同一个scheme,domain,和port;其他的都是"third-party";
"if-domain"/"unless-domain"(值为一组字符串,可选):匹配的域名。
触发器触发后的执行方案的关键字包括:
"type"(值为string ,此关键字必须包含):定义了当触发器激活后要做的事情,如"block","block-cookies","css-display-none"。;
"selector"(值为string,当"type"的值为"css-display-none"类型的时候,必须包含此关键字):定义的在页面上应用“type”的被选择对象(此选项在“type”值为"css-display-none"的时候配合使用)。

3. 正则表达式支持的类型?
匹配任何字符:".";
匹配范围:"[a-b]";
量化的: "","+ ""* ";
组和括号;
支持一行的开头("^")和一行的结尾("$")。


参考文章:https://www.webkit.org/blog/3476/content-blockers-first-look/



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值