iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
1
Modern Web

Chrome extension 學習手札系列 第 12

Chrome extension 學習手札 12 - 腳本實作 - 準備&介紹web Request

  • 分享至 

  • xImage
  •  

昨天已經把番茄鐘的整個功能完善了,其他的細節與防呆就不多處理了,如果有興趣的人可以依照連結去github下載下來玩看看,等到後面一點我們再來把作品試著打包與發佈,今天我們就來繼續試著寫新的功能吧!

這個功能是一個比較安全性的服務,他主要是使用『chrome.webRequest』與後台腳本搭配,並且在特定網站下監控http request的工作,所以我們要先做一些功課。

今日主題 :

chrome webRequest

官網定義為可以觀察API請求與流量,甚至可以攔截、修改與駁回

以下為官方提供 請求(requests)的生命週期

而chrome.webRequest就是可以對以下所有事件做監控,但是不同的時間點,可以支援的功能不一樣

所以我有整理了一下功能說明,但詳細的參數設定還是可以在官網查看

  • onBeforeRequest - 在請求發生以前產生,也是唯一可以攔截到 request body 的時間點,所以任何post的資料或form data等等全部都可以在此攔截到,可能因為安全性問題,所以並不允許編輯。
  • onBeforeSendHeaders - 在發送headers以前產生,可以在此攔截headers並修改,再繼續傳送到server。
  • onSendHeaders - 在header發送到server前的最後一刻產生,一樣可以查看headers,並且是修改後的headers。
  • onHeadersReceived - 當瀏覽器接收到headers回應時會觸發,因為請求可能會有多次,所以通常不會只觸發一次,此功能可以觀察到 response headers回傳的資料,並且可以加以修改,而此時間點也能重定向網址,讓接下來的請求重新導向到自定義的網址。
  • onAuthRequired - 當網站觸發http authentication時使用,並且可以讓擴充功能為它提供authCredentials參數,自動幫請求帶入username以及password,或是直接駁回請求,顯示錯誤頁面,不過若一直帶入錯誤的資訊,可能會有陷入無窮迴圈的困境
  • onBeforeRedirect - 當請求被重定向時觸發,主要拿來監控server有沒有重定向您的請求,但extension的重定向也會觸發此時間點。
  • onResponseStarted - 當server回應第一個bytes的response body時觸發,確認request body已經成功送到server了
  • onCompleted - 當請求完成時產生
  • onErrorOccurred - 當請求錯誤時產生

接下來介紹:

BlockingResponse

Blocking是基於chrome.webRequest底下的一個服務,用來實際的攔截與修改請求,目前有以下功能:

  1. 取消請求(cancel)
  2. 重定向網址(redirectUrl)
  3. 修改requestHeaders
  4. 修改responseHeaders
  5. 自動認證(authCredentials)

但它們都在特定的時間點才可以使用,例如authCredentials只有onAuthRequired可以使用,等到我們使用時再看案例吧!

另外還有onActionIgnored事件是在請求修改被忽略的時候會觸發,以及內建的handlerBehaviorChanged事件清除緩存使用,但這些是比較進階的用法我們在此就不多研究囉。

明天就來使用webRequest來開發應用程式吧!

參考文獻:https://crxdoc-zh.appspot.com/extensions/webRequest


上一篇
Chrome extension 學習手札 11 - 基本實作 - 番茄鐘 part6
下一篇
Chrome extension 學習手札 13- 腳本實作 - HTTP自動認證(HTTP Authentication)
系列文
Chrome extension 學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言