iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
Modern Web

Chrome extension 學習手札系列 第 14

Chrome extension 學習手札 14 - 腳本實作 - 安全性防護網

  • 分享至 

  • xImage
  •  

今天要繼續著學習怎麼運用 chrome.webRequest 功能,以及blocking的運用,

而且剛好工程師的工作經常需要瀏覽網站,所以有可能會不小心點到不安全的網站,

於是我們可以運用chrome extension來幫我們監控與安全性防護,

那我們就開始吧!(依舊是用empty project模組來開發喔!)

首先要先開通後台腳本的全程監控

manifest.json

  "background": {
    "scripts": [
      "background/bg.js"
    ],
    "persistent": true
  },

然後要開啟網站的最高權限以及通知(notifications),讓我們在網站請求被駁回時可以警告使用者

manifest.json

  "permissions": [
    "activeTab",
    "notifications",
    "tabs",
    "webRequest",
    "webRequestBlocking",
    "http://*/*",
    "https://*/*"
  ]

好了!那我們就來寫後台腳本吧!首先建個假裝API回傳資料的格式

background/bg.js

var db = {
    warning: ['https://www.kcg.gov.tw/*', 'https://kcginfo.kcg.gov.tw/*'],
    danger: ['https://www.chinatimes.com/*', 'http://www.ctitv.com.tw/*']
}

然後宣告一個變數來監控是否要繼續執行請求

var warningCallback = function(details) {
    if(confirm("警告!你即將進入管制地帶,請問你仍要進入網站嗎?")){
        chrome.webRequest.onBeforeRequest.removeListener(warningCallback)
        chrome.notifications.create('confirmWeb',{
            type: 'basic',
            iconUrl: 'icons/icon16.png',
            title: '關閉監控!',
            message: '已經關閉對warning等級的監控!'
        })
    }else{
        return { redirectUrl: 'https://www.google.com/' }
    }
}
    
chrome.webRequest.onBeforeRequest.addListener(
    warningCallback,
    { urls: db.warning }, //需是陣列型態
    ['blocking']
)

由上述可看到,在第一次請求時如果使用者允許的話就會停止監控功能,並且使用notification做提醒,否則就會將網站導向google,而用命名函數的原因是要removeListener的話只能對命名函數做關閉,匿名則無法關閉。

接下來是強制關閉網站的請求方法

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        chrome.notifications.create('cancelWeb',{
            type: 'basic',
            iconUrl: 'icons/icon16.png',
            title: '網站封鎖!',
            message: '您前往的網站已封鎖,無法瀏覽!'
        })
        return { cancel: true }
    },
    { urls: db.danger }, //需是陣列型態
    ['blocking']
)

這個比較簡單,只要符合需求的網站就會被直接關閉,並且跳出警告提示。

所以當我們載入了以後,只要開啟了警告(warning)網站就會觸發confirm

當我們選擇『否』就會跳窗到www.google.com

但如果我們選擇『是』,就會關閉監控並繼續執行請求

而危險(danger)的網站,則是連開啟都不能開啟

並且右下角會跳出提示,這樣就大功告成拉!

後話:其實要阻止瀏覽的方式有很多,可以使用chrome.tabs或是內容腳本直接window.close(),這裡只是提供一個方法讓大家參考,並不代表是最適合的方法喔!


上一篇
Chrome extension 學習手札 13- 腳本實作 - HTTP自動認證(HTTP Authentication)
下一篇
Chrome extension 學習手札 15 - 腳本實作 - Youtube 自定義風格
系列文
Chrome extension 學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言