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