ArkWeb智能防跟踪与广告过滤 - 保护用户隐私

xun_wang_6384a403f9817c2

SameX

Posted on November 25, 2024

ArkWeb智能防跟踪与广告过滤 - 保护用户隐私

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。

简介

华为鸿蒙HarmonyOS Next系统的ArkWeb(方舟Web)应用框架为开发者提供了强大的Web应用开发能力。然而,Web应用可能会收集用户的个人信息和浏览行为,从而引发隐私问题。ArkWeb框架提供了智能防跟踪功能和广告过滤功能,可以帮助开发者保护用户的隐私。

智能防跟踪功能

ArkWeb框架的智能防跟踪功能可以阻止跟踪型网站携带cookie进行追踪,从而保护用户的隐私。跟踪型网站通常会使用第三方库或脚本跟踪用户的浏览行为,并将其发送到服务器进行分析。智能防跟踪功能可以阻止这些请求,从而防止用户信息被泄露。

工作原理

智能防跟踪功能通过拦截来自跟踪型网站的请求来实现。当Web组件尝试加载来自跟踪型网站的资源时,ArkWeb内核会拦截该请求,并根据配置决定是否允许该请求。如果配置为禁止跟踪型网站的请求,则该请求将被拦截,并阻止携带cookie进行追踪。

如何开启和配置

您可以通过以下步骤开启和配置智能防跟踪功能:

  1. 在应用的入口文件(例如EntryAbility.ets)中调用以下API开启智能防跟踪功能:
import { webview } from '@ohos.web.webview';
// ...
// 开启智能防跟踪功能
webview.WebviewController.enableIntelligentTrackingPrevention({
    enable: true // 开启智能防跟踪功能
});
Enter fullscreen mode Exit fullscreen mode
  1. 您可以设置绕过智能防跟踪功能的域名列表,允许这些域名的请求携带cookie。例如:
import { webview } from '@ohos.web.webview';
// ...
// 设置绕过智能防跟踪功能的域名列表
webview.WebviewController.addIntelligentTrackingPreventionBypassingList(["trusteddomain.com", "anothertrusteddomain.com"]);
Enter fullscreen mode Exit fullscreen mode

广告过滤功能

ArkWeb框架提供了广告过滤功能,可以帮助开发者拦截网页中的广告,从而提升用户体验并保护用户隐私。您可以使用自定义easylist规则文件进行广告拦截,或者使用内置的规则文件。

使用自定义easylist规则文件

您可以使用自定义easylist规则文件来拦截网页中的广告。easylist规则文件是一种简单的文本文件,它包含了要拦截的URL模式或CSS选择器。例如:

https://example.com/ad/*
.advert*
Enter fullscreen mode Exit fullscreen mode

这段规则会拦截example.com域下所有以ad开头的URL,以及所有类名为advert的元素。
您可以将自定义easylist规则文件保存到应用的资源目录下,并使用以下API将其设置到Web组件中:

import { webview } from '@ohos.web.webview';
import { picker } from '@ohos.core.file';
// ...
// 选择自定义easylist规则文件
const documentSelectOptions = new picker.DocumentSelectOptions();
const documentPicker = new picker.DocumentViewPicker();
documentPicker.select(documentSelectOptions).then((documentSelectResult) => {
    if (documentSelectResult && documentSelectResult.length > 0) {
        const fileRealPath = new fileUri.FileUri(documentSelectResult[0]);
        webview.AdsBlockManager.setAdsBlockRules(fileRealPath.path, true);
    }
});
Enter fullscreen mode Exit fullscreen mode

使用内置的规则文件

ArkWeb框架内置了一些广告过滤规则文件,您可以使用以下API将其设置到Web组件中:

import { webview } from '@ohos.web.webview';
// ...
// 使用内置的规则文件开启广告过滤功能
webview.AdsBlockManager.setAdsBlockRules(null, false);
Enter fullscreen mode Exit fullscreen mode

如何开启和配置

您可以通过以下步骤开启和配置广告过滤功能:

  1. 在应用的入口文件(例如EntryAbility.ets)中调用以下API开启广告过滤功能:
import { webview } from '@ohos.web.webview';
// ...
// 开启广告过滤功能
webview.WebviewController.enableAdsBlock({
    enable: true // 开启广告过滤功能
});
Enter fullscreen mode Exit fullscreen mode
  1. 您可以设置允许或禁止广告过滤的域名列表。例如:
import { webview } from '@ohos.web.webview';
// ...
// 设置允许广告过滤的域名列表
webview.AdsBlockManager.addAdsBlockAllowedList(["example.com", "anotherexample.com"]);
Enter fullscreen mode Exit fullscreen mode
import { webview } from '@ohos.web.webview';
// ...
// 设置禁止广告过滤的域名列表
webview.AdsBlockManager.addAdsBlockDisallowedList(["adexample.com", "anotheradexample.com"]);
Enter fullscreen mode Exit fullscreen mode

示例代码

以下示例代码展示了如何使用ArkWeb API开启智能防跟踪功能和广告过滤功能,并设置相关的配置:

import { webview } from '@ohos.web.webview';
import { picker } from '@ohos.core.file';
// ...
// 开启智能防跟踪功能
webview.WebviewController.enableIntelligentTrackingPrevention({
    enable: true // 开启智能防跟踪功能
});
// 开启广告过滤功能
webview.WebviewController.enableAdsBlock({
    enable: true // 开启广告过滤功能
});
// 选择自定义easylist规则文件
const documentSelectOptions = new picker.DocumentSelectOptions();
const documentPicker = new picker.DocumentViewPicker();
documentPicker.select(documentSelectOptions).then((documentSelectResult) => {
    if (documentSelectResult && documentSelectResult.length > 0) {
        const fileRealPath = new fileUri.FileUri(documentSelectResult[0]);
        webview.AdsBlockManager.setAdsBlockRules(fileRealPath.path, true);
    }
});
// 设置绕过智能防跟踪功能的域名列表
webview.WebviewController.addIntelligentTrackingPreventionBypassingList(["trusteddomain.com", "anothertrusteddomain.com"]);
// 设置允许广告过滤的域名列表
webview.AdsBlockManager.addAdsBlockAllowedList(["example.com", "anotherexample.com"]);
// 设置禁止广告过滤的域名列表
webview.AdsBlockManager.addAdsBlockDisallowedList(["adexample.com", "anotheradexample.com"]);
Enter fullscreen mode Exit fullscreen mode

总结

ArkWeb框架的智能防跟踪功能和广告过滤功能可以帮助开发者保护用户的隐私。通过了解这些功能的工作原理,并采取适当的配置,您可以开发出更加安全可靠的Web应用,保护用户的隐私和数据安全。

💖 💪 🙅 🚩
xun_wang_6384a403f9817c2
SameX

Posted on November 25, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related