午夜福利院在线观看免费,天堂最新版在线,色噜噜精品一区二区三区,无码一区二区三区中文字幕,丝袜美腿一区二区三区

首頁>文檔>百度云防護(hù)>百度云防護(hù)配置:Web 應(yīng)用集成SDK

百度云防護(hù)配置:Web 應(yīng)用集成SDK

Web 應(yīng)用集成SDK

您必須在應(yīng)用中集成JSSDK,才能配置網(wǎng)頁防爬場景化規(guī)則。本文介紹了如何為Web應(yīng)用集成WAF防護(hù)JSSDK(以下簡稱JSSDK)。

組件

Web JSSDK集成包括JavaScript挑戰(zhàn)、異步接口響應(yīng)兩個組件。

JavaScript挑戰(zhàn)組件

JavaScript挑戰(zhàn)組件是JavaScript挑戰(zhàn)能力的Web集成模塊。當(dāng)在控制臺配置開啟了網(wǎng)頁防爬場景化的JavaScript挑戰(zhàn)能力之后,WAF會對訪問了該配置路徑的流量發(fā)起JavaScript挑戰(zhàn),若客戶端未通過挑戰(zhàn),則不會返回真實(shí)頁面,會對拒絕的請求并返回JavaScript挑戰(zhàn)驗(yàn)證頁。

JavaScript挑戰(zhàn)組件會在客戶端頁面的域名下植入cookie,以幫助客戶端完成JavaScript挑戰(zhàn),站長可以通過自動集成或者手動集成的情況下接入該組件,在自動集成的情況下,WAF會為站點(diǎn)所有頁面在最前方注入該組件,而在手動集成的情況下,客戶需要手動將該組件寫在頁面最前方位置。

在客戶端中,若發(fā)起的頁面請求,WAF會返回一個可以執(zhí)行JavaScript代碼中間頁,并在中間頁中加載并執(zhí)行該組件種下cookie,之后刷新頁面。若客戶端發(fā)起的是異步請求,WAF會在該異步請求所在頁面的最前方注入并執(zhí)行該組件,以種下cookie。 JavaScript挑戰(zhàn)植入的cookie是有有效期的,在頁面集成該組件的情況下,定期刷新這個cookie,以保證cookie在有限期內(nèi)。

異步接口響應(yīng)組件

在防爬場景化配置頁面中,可以配置對指定條件下的接口開啟了動態(tài)簽名功能,以及滑塊驗(yàn)證碼功能,這兩個功能需要通過自動或者手動方式集成異步接口響應(yīng)組件來完成。 異步響應(yīng)組件包含兩個能力,客戶端簽名能力和驗(yàn)證碼彈出能力,自動集成了異步響應(yīng)組件之后,組件將接管Web應(yīng)用的異步請求,在請求發(fā)起與請求響應(yīng)時,完成指定挑戰(zhàn)任務(wù)(動態(tài)簽名挑戰(zhàn)與驗(yàn)證碼挑戰(zhàn)),待客戶端完成挑戰(zhàn)任務(wù)之后,客戶端才會執(zhí)行后續(xù)動作。

異步接口響應(yīng)組件自動集成工作原理:

1、Hook異步API:在自動集成異步接口響應(yīng)組件的情況下,組件會全局重寫XMLHttpRequest(xhr)、Fetch兩個異步請求的Web API,在API接口請求對象上額外封裝一層代碼,通常情況不會影響原始對象的各種特性。

2、動態(tài)簽名注入:對通過XMLHttpRequest、Fetch這兩個Web API發(fā)起的所有異步接口的請求URL中添加一個query參數(shù)作為動態(tài)簽名。

3、驗(yàn)證碼挑戰(zhàn):當(dāng)異步請求響應(yīng)式,組件會通過Hook先判斷當(dāng)前response是否為WAF發(fā)起的驗(yàn)證碼挑戰(zhàn)標(biāo)識,若response為驗(yàn)證碼挑戰(zhàn)標(biāo)識,頁面會彈出驗(yàn)證碼進(jìn)行驗(yàn)證碼挑戰(zhàn),待客戶端完成挑戰(zhàn)后,攜帶驗(yàn)證碼Token對請求進(jìn)行重試,若response并非為WAF返回的驗(yàn)證碼挑戰(zhàn)標(biāo)識,組件不會執(zhí)行任何動作,將結(jié)果傳遞給站點(diǎn)本身的JS代碼執(zhí)行。

說明:異步接口響應(yīng)組件Hook功能只會對XMLHttpRequest和fetch發(fā)起的異步請求添加動態(tài)簽名挑戰(zhàn)與驗(yàn)證碼挑戰(zhàn),對于SSE(Server-Sent Events)、Form表單提交、Image、script標(biāo)簽發(fā)起的請求,不會自動完成異步接口響應(yīng)組件的挑戰(zhàn)。

自動集成異步接口響應(yīng)組件時:

會自動進(jìn)行XMLHttpRequest和fetch的hook,此時hook可能會產(chǎn)生兼容性沖突問題(詳情見下文兼容性說明章節(jié)),若無法處理產(chǎn)生的沖突,則可以選擇使用手動集成的形式,手動集成形式不會對XMLHttpRequest和fetch進(jìn)行hook,站長需要通過異步接口響應(yīng)組件提供的JSAPI,在防護(hù)場景的API接口上手動進(jìn)行動態(tài)簽名注入和驗(yàn)證碼挑戰(zhàn)。

手動集成異步接口響應(yīng)組件時:

  • 對于動態(tài)簽名能力,需要確保配置并開啟了動態(tài)簽名場景化保護(hù)的接口一定要攜帶上動態(tài)簽名,否則WAF將會拒絕訪問
  • 對于滑塊驗(yàn)證碼能力,需要確保配置并開啟了異常流量處置的場景化保護(hù)接口在被WAF返回驗(yàn)證碼挑戰(zhàn)標(biāo)識之后,若要對接口進(jìn)行重試,必須攜帶上驗(yàn)證碼驗(yàn)證通過之后的token,否則waf會再次返回驗(yàn)證碼挑戰(zhàn)標(biāo)識

部署方式

1、自動集成

可在配置網(wǎng)頁防爬場景化的防護(hù)場景定義時,選擇自動集成,此時網(wǎng)站HTML頁面由WAF接管,WAF會在頁面請求響應(yīng)時,向頁面注入組件script標(biāo)簽,客戶網(wǎng)頁無需進(jìn)行代碼改造即可完成部署,同時享受線上組件的熱更新。

2、手動集成 適合于無法滿足自動集成的場景,或者當(dāng)前站點(diǎn)與組件產(chǎn)生沖突的情況,手動集成必須滿足以下條件

  • 所有依賴配置了防護(hù)場景的 API 接口所在的頁面,都必須接入特定組件
  • 在頁面使用組件功能之前,必須先完成組件script代碼的注入

JavaScript挑戰(zhàn)組件

<script>window.__noxImd = 1</script>
<script src="https//sec-captcha-waf.cdn.bcebos.com/static/wb/1.0/nox_20241230.js"></script>

異步接口響應(yīng)組件

<script src="https//sec-captcha-waf.cdn.bcebos.com/static/wb/1.0/tox_20241230.js"></script>

如內(nèi)容安全策略csp不允許從sec-captcha-waf.cdn.bcebos.com加載資源,可將組件資源下載至服務(wù)本地進(jìn)行本地化部署

3、JSAPI

在手動集成了異步接口響應(yīng)組件之后,可通過一下JSAPI生成動態(tài)簽名和驗(yàn)證碼挑戰(zhàn)。

動態(tài)簽名生成:

1、通過Tox.getToken獲取動態(tài)簽名,若網(wǎng)絡(luò)波動導(dǎo)致異步接口響應(yīng)組件加載失敗,可以使用錯誤碼 499 作為降級簽名

var toxToken = typeof Tox !== 'undefined' ? Tox.getToken() : '499';

2、將toxToken添加到防護(hù)場景的API接口的URL Query參數(shù)中,query的key為tox_token,value為toxToken,如下

/path/to/request?query1=value1&tox_token={toxToken}

驗(yàn)證碼挑戰(zhàn):

1、通過 Tox.isCaptchaResponse 先判斷當(dāng)前response是否為WAF發(fā)起的驗(yàn)證碼挑戰(zhàn)標(biāo)識。

// 傳入響應(yīng)狀態(tài)碼status、響應(yīng)類型content-type、響應(yīng)體body

const isWafCaptchaFlag = Tox.isCaptchaResponse(status, contentType, responseBody);

2、然后通過 Tox.getCaptchaToken 發(fā)起驗(yàn)證碼挑戰(zhàn),并通過回調(diào)獲取驗(yàn)證碼通過之后的token。

// 傳入響應(yīng)體body、回調(diào)函數(shù)callback
Tox.getCaptchaToken(responseBody, function (captchaToken) {
    // 處理captchaToken
});
  1. 將captchaToken添加到防護(hù)場景的API接口的URL Query參數(shù)中,query的key為svcp_stk,value為captchaToken,如下:
/path/to/request?query1=value1&svcp_stk={captchaToken}

常見問題

兼容性說明

1.瀏覽器環(huán)境兼容性:兼容IE10內(nèi)核以上各類瀏覽器與客戶端容器。

2.兼容性依賴:客戶端需要支持cookie功能。容器或請求本身不支持cookie,則JavaScript挑戰(zhàn)組件功能會被影響。

3.Hook兼容。

第三方組件沖突:異步接口響應(yīng)組件會對所有異步請求的query中添加參數(shù),這會與不支持多余query參數(shù)的第三方組件產(chǎn)生沖突

非標(biāo)異步請求沖突:異步接口響應(yīng)組件在添加query參數(shù)過程中,會按照標(biāo)準(zhǔn)對請求的URL進(jìn)行解析并編碼,若服務(wù)器接口解析URL的方式不標(biāo)準(zhǔn),則會產(chǎn)生沖突

關(guān)于Hook兼容沖突問題,可通過手動接入的形式避免沖突的產(chǎn)生。

組件副作用說明

性能增加

1、自動集成情況下,會在頁面head標(biāo)簽中注入組件script,若網(wǎng)絡(luò)波動導(dǎo)致組件加載過慢,會導(dǎo)致頁面出現(xiàn)白屏。

2、自動集成情況下,異步接口響應(yīng)組件會為頁面接口無差別添加動態(tài)簽名tox_token,這會消耗部分計(jì)算資源

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
QQ客服
  • QQ176363189 點(diǎn)擊這里給我發(fā)消息
旺旺客服
  • 速度網(wǎng)絡(luò)服務(wù)商 點(diǎn)這里給我發(fā)消息
電子郵箱
  • sudu@yunjiasu.cc
微信客服
  • suduwangluo