看板 Browsers 關於我們 聯絡資訊
※ 引述《ettoolong (ettoolong)》之銘言: : ※ 引述《danny0838 (道可道非常道)》之銘言: : : 4. 禁止 chrome.tabs.executeScript 用「code」執行程式碼文字 : 不確定有沒有影響, 腳本類的套件可以先把自己的腳本用 content script 注入, : 然後把原本要用 chrome.tabs.executeScript 執行的 code 用 message : 送給自己已經在 tab 執行的 content script, 讓該 script 用 eval 的方式執行. : 但是 AMO 早就禁止使用 eval, 但是不確定 chrome web store 有沒有擋 eval, : 有擋的話就應該死了, 因為直接不允許你用動態的方式生成 script. 測試了一下,V3 還有一個改變,我補充在原PO了: * content script 禁止執行 eval 類函數(Manifest V2 可以) 而經測試,content script 在 DOM 插入 script 元素時, script 是視為在 content script 執行(而不是視為 page script) 所以想在 content script 執行類似以下腳本的方式也是不通: var s = document.createElement('script'); s.innerText = "alert('test');"; document.body.appendChild(s); s.remove(); 目前發現這樣寫可以繞過: var s = document.createElement('span'); s.setAttribute('onclick', 'alert("arbitrary code");'); document.body.appendChild(s); s.click(); s.remove(); 但不曉得未來會不會也被封死就是... 但就算這樣可以, 要讓 page script 和 extention script 溝通是很困難的, 因為不像 content script 可以用 chrome.runtime.sendMessage(...)。 -- 《終結內容農場》瀏覽器套件 Chrome: http://bit.ly/CFTGC Firefox: http://bit.ly/CFTFx (桌機 & Android 手機) 真相1: http://bit.ly/CFTss1 真相2: http://bit.ly/CFTss2 詳細介紹:http://bit.ly/CFTinfo -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.16.43 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Browsers/M.1611306945.A.25E.html ※ 編輯: danny0838 (1.164.16.43 臺灣), 01/22/2021 17:23:23