[英]Inject javascript at the very top of the page \ Anti iframe-buster
我正在開發一個擴展程序,有時會在iframe中顯示一些網站。 我已經繞過了X-FRAME-OPTIONS的問題,但是現在,我只能使用簡單的 iframe克星代碼,例如:
if (top != self) {
document.getElementsByTagName("html")[0].style.display = "none";
top.location.replace(location);
}
我試圖在頁面的頂部注入javascript以覆蓋window.top對象,但是在document_start
已經太晚了,無法注入它,即,在破壞者腳本運行之前從未調用過alert()
:
chrome.webRequest.onCompleted.addListener(function(details) {
if (isEnabled) {
chrome.tabs.executeScript(details.tabId, {frameId: details.frameId, runAt: "document_start", code: "alert('asas');"});
}
}, {
types: ["sub_frame"],
urls: ["<all_urls>"]
});
有沒有辦法解決?
謝謝
該問題可能是由於chrome.webRequest.onCompleted.addListener
偵聽器異步導致的
document_start
在創建任何DOM之前注入代碼,因此這不是造成問題的原因。 我在玩耍並嘗試回答此問題時已對此進行了驗證。
這里的問題是chrome.webRequest.onCompleted.addListener
是異步的,這意味着當執行回調(並因此執行chrome.tabs.executeScript
)時,瀏覽器已經開始構建DOM。
您可以先使用manifest.json
的"content_scripts"
直接將腳本注入所有相關的iframe,而不要使用程序注入。 我尚未對此進行驗證,但是
您也可以嘗試使用
。 chrome.webRequest.onHeadersReceived
監聽器中的
"blocking"
選項注入腳本,該選項可讓您同步處理請求
onHeadersReceived
,您可能已經在監聽onHeadersReceived
以便刪除X-Frame-Options
標頭。
編輯:
無法在阻塞的onHeadersReceived
偵聽器中進行程序注入。 Chrome會返回有關權限不足的錯誤-可能是因為目前尚不知道該網址(標頭可能會導致重定向)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.