• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 使用智能防跟踪功能
2<!--Kit: ArkWeb-->
3<!--Subsystem: Web-->
4<!--Owner: @aohui-->
5<!--Designer: @yaomingliu-->
6<!--Tester: @ghiker-->
7<!--Adviser: @HelloCrease-->
8
9
10Web组件支持智能防跟踪功能,即当跟踪型网站作为第三方插入到其他网页时,其发送的网络请求将禁止携带cookie。
11
12- 通过调用[enableIntelligentTrackingPrevention](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#enableintelligenttrackingprevention12)接口启用或关闭Web组件的智能防跟踪功能。默认情况下,该功能未启用。
13
14  ```ts
15  // xxx.ets
16  import { webview } from '@kit.ArkWeb';
17  import { BusinessError } from '@kit.BasicServicesKit';
18
19  @Entry
20  @Component
21  struct WebComponent {
22    controller: webview.WebviewController = new webview.WebviewController();
23
24    build() {
25      Column() {
26        Button('enableIntelligentTrackingPrevention')
27          .onClick(() => {
28            try {
29              this.controller.enableIntelligentTrackingPrevention(true);
30              console.log("enableIntelligentTrackingPrevention: true");
31            } catch (error) {
32              console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
33            }
34          })
35        Web({ src: 'www.example.com', controller: this.controller })
36      }
37    }
38  }
39  ```
40
41- 调用[isIntelligentTrackingPreventionEnabled](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#isintelligenttrackingpreventionenabled12)接口,判断Web组件是否开启了智能防跟踪功能。
42
43  ```ts
44  // xxx.ets
45  import { webview } from '@kit.ArkWeb';
46  import { BusinessError } from '@kit.BasicServicesKit';
47
48  @Entry
49  @Component
50  struct WebComponent {
51    controller: webview.WebviewController = new webview.WebviewController();
52
53    build() {
54      Column() {
55        Button('isIntelligentTrackingPreventionEnabled')
56          .onClick(() => {
57            try {
58              let result = this.controller.isIntelligentTrackingPreventionEnabled();
59              console.log("result: " + result);
60            } catch (error) {
61              console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
62            }
63          })
64        Web({ src: 'www.example.com', controller: this.controller })
65      }
66    }
67  }
68  ```
69
70- 通过[onIntelligentTrackingPreventionResult](../reference/apis-arkweb/arkts-basic-components-web-events.md#onintelligenttrackingpreventionresult12)接口将被拦截的跟踪型域名及其触发网站的域名回调给应用。
71
72  ```ts
73  // xxx.ets
74  import { webview } from '@kit.ArkWeb';
75  import { BusinessError } from '@kit.BasicServicesKit';
76
77  @Entry
78  @Component
79  struct WebComponent {
80    controller: webview.WebviewController = new webview.WebviewController();
81
82    build() {
83      Column() {
84        // 需要打开智能防跟踪功能,才会触发onIntelligentTrackingPreventionResult回调
85        Button('enableIntelligentTrackingPrevention')
86          .onClick(() => {
87            try {
88              this.controller.enableIntelligentTrackingPrevention(true);
89            } catch (error) {
90              console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
91            }
92          })
93        Web({ src: 'www.example.com', controller: this.controller })
94          .onIntelligentTrackingPreventionResult((details) => {
95            console.log("onIntelligentTrackingPreventionResult: [websiteHost]= " + details.host +
96              ", [trackerHost]=" + details.trackerHost);
97          })
98      }
99    }
100  }
101  ```
102
103智能防跟踪功能提供了一组接口,用于设置绕过该功能的域名列表。这些接口设置的域名列表适用于整个应用,而非特定的Web组件。
104
105- 调用[addIntelligentTrackingPreventionBypassingList](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#addintelligenttrackingpreventionbypassinglist12)接口设置绕过域名列表。
106
107  ```ts
108  // xxx.ets
109  import { webview } from '@kit.ArkWeb';
110  import { BusinessError } from '@kit.BasicServicesKit';
111
112  @Entry
113  @Component
114  struct WebComponent {
115    controller: webview.WebviewController = new webview.WebviewController();
116
117    build() {
118      Column() {
119        Button('addIntelligentTrackingPreventionBypassingList')
120          .onClick(() => {
121            try {
122              let hostList = ["www.test1.com", "www.test2.com", "www.test3.com"];
123              webview.WebviewController.addIntelligentTrackingPreventionBypassingList(hostList);
124            } catch (error) {
125              console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
126            }
127          })
128        Web({ src: 'www.example.com', controller: this.controller })
129      }
130    }
131  }
132  ```
133
134- 调用[removeIntelligentTrackingPreventionBypassingList](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#removeintelligenttrackingpreventionbypassinglist12)接口删除部分绕过域名列表。
135
136  ```ts
137  // xxx.ets
138  import { webview } from '@kit.ArkWeb';
139  import { BusinessError } from '@kit.BasicServicesKit';
140
141  @Entry
142  @Component
143  struct WebComponent {
144    controller: webview.WebviewController = new webview.WebviewController();
145
146    build() {
147      Column() {
148        Button('removeIntelligentTrackingPreventionBypassingList')
149          .onClick(() => {
150            try {
151              let hostList = [ "www.test1.com", "www.test2.com" ];
152              webview.WebviewController.removeIntelligentTrackingPreventionBypassingList(hostList);
153            } catch (error) {
154              console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
155            }
156          })
157        Web({ src: 'www.example.com', controller: this.controller })
158      }
159    }
160  }
161  ```
162
163- 调用[clearIntelligentTrackingPreventionBypassingList](../reference/apis-arkweb/arkts-apis-webview-WebviewController.md#clearintelligenttrackingpreventionbypassinglist12)接口清除所有绕过域名列表。
164
165  ```ts
166  // xxx.ets
167  import { webview } from '@kit.ArkWeb';
168
169  @Entry
170  @Component
171  struct WebComponent {
172    controller: webview.WebviewController = new webview.WebviewController();
173
174    build() {
175      Column() {
176        Button('clearIntelligentTrackingPreventionBypassingList')
177          .onClick(() => {
178            webview.WebviewController.clearIntelligentTrackingPreventionBypassingList();
179          })
180        Web({ src: 'www.example.com', controller: this.controller })
181      }
182    }
183  }
184  ```
185