簡體   English   中英

在頁面的頂部注入JavaScript \\反iframe-buster

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM