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