全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS11 WKWebView内容过滤规则详解

WKWebView中新增了一个功能,可以对WebView的内容添加一些自定义的过滤规则。这个功能原来在 Safari Extension 中被引入,从 11 开始同样适用于WKWebView。

使用方法

原理上就是提供一个 JSON 给 WebKit,这个 JSON 包括内容的触发规则(trigger)和对应的处理方式(action)。比如:

[{
"trigger": {
"url-filter": ".*" },
"action": {
"type": "make-https"} 
}]

WebKit 会把拦截规则编译成高效的二进制码。使用方法如下:

WKContentRuleListStore.default().compileContentRuleList(
  forIdentifier: "ContentBlockingRules",
 encodedContentRuleList: jsonString) { (contentRuleList, error) in
  if let error = error {
     return
  }
 let configuration = WKWebViewConfiguration()     
 configuration.userContentController.add(ruleList!) 
}

可使用的处理方式:Action

对应的 Action 有以下几种:

  1. block:放弃加载资源,如果该资源已经缓存也忽略缓存
  2. block-cookies:所有发送的请求的header中都会过滤掉cookie
  3. css-display-none:隐藏使用 CSS selector 的页面元素,同时还有关联的selector:
    "action": {
       "type": "css-display-none",
       "selector": "#newsletter, :matches(.main-page, .article) .news-overlay"
    }

  4. ignore-previous-rules:前面触发的规则不执行
  5. make-https:把网页里的 http 请求改为 https 请求

规则触发器:trigger

触发器必须有url-filter,可选的键有:resource-type、if-domain、unless-domain

  1. url-filter 匹配 URL 的正则表达式
  2. if-domain 或者 unless-domain if-domain:规则只在这些域名下起作用。unless-domain:这些域名除外。
  3. resource-type 资源的类型,对应的 value 有:
    1. document
    2. image
    3. style-sheet
    4. script
    5. font
    6. raw (Any untyped load, such as XMLHttpRequest)
    7. svg-document
    8. media
    9. popup
  4. load-type 资源的归属。默认是全部的资源。如果收到填有两种 value:
    1. first-party 只有当资源和页面的scheme、域名、端口一致时才触发
    2. third-party 只有当资源和页面的域名不一致时才触发

举个 trigger 的示例就是:

"trigger": {
    "url-filter": ".*",
    "resource-type": ["image", "style-sheet"],
    "unless-domain": ["your-content-server.com", "trusted-content-server.com"]
}

总结

可以通过配置规则拦截页面里的资源请求、隐藏页面里的指定元素、将http请求转换成https。

参考

Content Blocking Rules

WWDC 17:customized_loading_in_wkwebview

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# iOS11  # WKWebView内容过滤  # WKWebView内容过滤规则  # iOS中WKWebView白屏问题的分析与解决  # Swift使用WKWebView在iOS应用中调用Web的方法详解  # iOS11 WKWebView 无法加载内容的解决方法  # ios下OC与JS交互之WKWebView  # iOS11 WKWebView问题汇总  # IOS中UIWebView、WKWebView之JS交互  # iOS和JS交互教程之WKWebView-协议拦截详解  # iOS中WKWebView的一些特殊使用总结  # 简单说说iOS之WKWebView的用法小结  # iOs迁至WKWebView跨过的一些坑  # 时才  # 适用于  # 可以通过  # 几种  # 自定义  # 可选  # 只在  # 会把  # 有两种  # 提供一个  # 转换成  # 以对  # 大家多多  # 举个  # 方法如下  # 过滤掉  # 加载  # 编译成  # 新增了  # 正则表达式 


相关文章: 招商网站制作流程,网站招商广告语?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  建站之星导航配置指南:自助建站与SEO优化全解析  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何在阿里云购买域名并搭建网站?  常州企业建站如何选择最佳模板?  香港服务器租用每月最低只需15元?  建站主机选虚拟主机还是云服务器更好?  如何通过免费商城建站系统源码自定义网站主题与功能?  ,石家庄四十八中学官网?  详解jQuery中基本的动画方法  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何在阿里云域名上完成建站全流程?  湖北网站制作公司有哪些,湖北清能集团官网?  制作电商网页,电商供应链怎么做?  家具网站制作软件,家具厂怎么跑业务?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  C#如何在一个XML文件中查找并替换文本内容  代购小票制作网站有哪些,购物小票的简要说明?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何在云指建站中生成FTP站点?  如何用y主机助手快速搭建网站?  建站VPS选购需注意哪些关键参数?  平台云上自助建站如何快速打造专业网站?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  深入理解Android中的xmlns:tools属性  小型网站建站如何选择虚拟主机?  已有域名和空间,如何快速搭建网站?  网站制作公司排行榜,抖音怎样做个人官方网站  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站主机选择指南:服务器配置与SEO优化实战技巧  如何选择美橙互联多站合一建站方案?  SQL查询语句优化的实用方法总结  ,购物网站怎么盈利呢?  Swift开发中switch语句值绑定模式  大连网站设计制作招聘信息,大连投诉网站有哪些?  h5在线制作网站电脑版下载,h5网页制作软件?  建站之星代理如何优化在线客服效率?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  PHP 500报错的快速解决方法  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何快速打造个性化非模板自助建站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何在万网主机上快速搭建网站?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  网站插件制作软件免费下载,网页视频怎么下到本地插件? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。