国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS11 WKWebView內容過濾規則詳解

2020-07-26 02:45:49
字體:
來源:轉載
供稿:網友

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彝良县| 崇义县| 甘孜县| 洛宁县| 黑山县| 涿州市| 盐源县| 成安县| 昌乐县| 玛多县| 台安县| 阳高县| 子洲县| 宜昌市| 奉化市| 株洲市| 巢湖市| 阿坝| 始兴县| 拉萨市| 甘德县| 舞阳县| 丰都县| 舟曲县| 衡东县| 泉州市| 白水县| 大埔县| 阜平县| 金华市| 云和县| 兴国县| 天全县| 永昌县| 云霄县| 昆山市| 区。| 蓬莱市| 乌兰察布市| 汝州市| 萨嘎县|