[請益] javascript 如何跨源存取 iframe 內容

看板Soft_Job (軟體人)作者 (God of Computer Science)時間1年前 (2023/03/12 14:41), 編輯推噓12(12050)
留言62則, 12人參與, 1年前最新討論串1/2 (看更多)
如題,學校網站課程影片的連結是存在某個 iframe 裡面, 由於我想要自己寫一個 Chrome extension 存取該連結並下載它, 腳本通常是用 javascript 寫,如果是下列寫法, iframe = document.getElementById("tool_content"); iframe.contentDocument 會因為 CORS 機制而存取不到, 想問板上各路大神是否有一個針對此問題的超強力解法?... (Q1) 此外,下載影片的方式我也想詢問,如果是右下角出現 Download Playback speed Picture in picture 這三者選單的畫面的話,有沒有也可以直接用 javascript 或其他等價方法的 下載方式呢?... (Q2) 上述兩個解答有效的話,都有豐厚批幣,但第一個問題較為重要,謝謝囉~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.121.35 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1678603297.A.0A9.html

03/12 15:55, 1年前 , 1F
其中一個作法可能是把 console.log(iframe) 的輸出
03/12 15:55, 1F

03/12 15:55, 1年前 , 2F
轉成字串就能處理,但這個動作我也一直找不到解法:(
03/12 15:55, 2F

03/12 16:08, 1年前 , 3F

03/12 16:10, 1年前 , 4F
原理是仿造一個網頁元素去下載?
03/12 16:10, 4F

03/12 16:12, 1年前 , 5F
好像不行耶 感覺要先把 cors 相關先念熟 我先躺了
03/12 16:12, 5F

03/12 16:19, 1年前 , 6F
可能要從瀏覽器緩存或是網路層下手了 這有專業的人在做
03/12 16:19, 6F

03/12 16:24, 1年前 , 7F
用postMessage和MessageEvent
03/12 16:24, 7F

03/12 16:36, 1年前 , 8F
回樓上,postMessage 是很多人提出的解法,但我不知
03/12 16:36, 8F

03/12 16:36, 1年前 , 9F
道具體要怎麼去修改校網傳來的 iframe,能加在 tag
03/12 16:36, 9F

03/12 16:37, 1年前 , 10F
裡面嗎?iframe 本身有辦法把自己的 content 丟出來
03/12 16:37, 10F

03/12 16:37, 1年前 , 11F
嗎?
03/12 16:37, 11F

03/12 17:20, 1年前 , 12F
proxy server
03/12 17:20, 12F

03/12 17:26, 1年前 , 13F
回樓上,自己架的話可能可以 (不清楚細節),但如果
03/12 17:26, 13F

03/12 17:27, 1年前 , 14F
要作成 extension 發布,總不可能叫人家自己架一個?
03/12 17:27, 14F

03/12 17:30, 1年前 , 15F
只是要抓影片wget不就結束了?
03/12 17:30, 15F

03/12 17:30, 1年前 , 16F
預期是inject一個script到網頁上去取得iFrame資料
03/12 17:30, 16F

03/12 17:33, 1年前 , 17F
要跨網域存取,一定需要你要存取的網頁配合,以你的情況來
03/12 17:33, 17F

03/12 17:35, 1年前 , 18F
說就是script要執行在iframe裡那個網頁上,只改外面的網頁
03/12 17:35, 18F

03/12 17:36, 1年前 , 19F
無論如何都是不行的(否則就是瀏覽器需要修補的安全性漏洞)
03/12 17:36, 19F

03/12 17:37, 1年前 , 20F
回覆 @s06yji3,我不確定 Chrome extension 能否這
03/12 17:37, 20F

03/12 17:37, 1年前 , 21F
但是你是extension,所以應該是直接inject script到iframe
03/12 17:37, 21F

03/12 17:37, 1年前 , 22F
樣做?然後 @ssccg 大,我有嘗試過 disable Chrome
03/12 17:37, 22F

03/12 17:38, 1年前 , 23F
的 CORS 限制,但是那個在網頁重整之後就會失效了。
03/12 17:38, 23F

03/12 17:38, 1年前 , 24F
裡面那個網頁去配合
03/12 17:38, 24F

03/12 17:38, 1年前 , 25F
Chrome extension 可以 inject script 到本地網頁去
03/12 17:38, 25F

03/12 17:39, 1年前 , 26F
撈那個 iframe 的內容,然後再回傳到自己的script嗎
03/12 17:39, 26F

03/12 17:43, 1年前 , 27F

03/12 17:43, 1年前 , 28F
content_scripts/#frames
03/12 17:43, 28F

03/12 17:50, 1年前 , 29F
謝謝樓上,看起來可以用上,但我這兩天爆試已經很累
03/12 17:50, 29F

03/12 17:54, 1年前 , 30F
哦,好像inject到iframe 比較直接
03/12 17:54, 30F

03/12 17:54, 1年前 , 31F
所有的 nested iframe 也可以 inject 嗎?
03/12 17:54, 31F

03/12 19:16, 1年前 , 32F
如果iframe 網址已知 我會用background script 直接去
03/12 19:16, 32F

03/12 19:16, 1年前 , 33F
撈 @@
03/12 19:16, 33F

03/12 19:23, 1年前 , 34F
乾好猛 學習到了
03/12 19:23, 34F

03/12 19:23, 1年前 , 35F
阿 我還是看不懂 等原po 實驗成功回來教教我QQ
03/12 19:23, 35F

03/12 21:43, 1年前 , 36F
有兩個都是 <iframe src="about:blank" ...,但我只
03/12 21:43, 36F

03/12 21:43, 1年前 , 37F
要其中一個,這樣有辦法嗎?
03/12 21:43, 37F

03/12 22:23, 1年前 , 38F
這東西之前弄過 但安全起見還有更好的方式
03/12 22:23, 38F

03/12 22:23, 1年前 , 39F
03/12 22:23, 39F

03/13 00:15, 1年前 , 40F
回樓上,如果是自己寫的腳本應該沒有安全顧慮?求解
03/13 00:15, 40F

03/13 00:34, 1年前 , 41F
這方式本來就有安全疑慮 無關是不是自己寫
03/13 00:34, 41F

03/13 00:35, 1年前 , 42F
寫 不硬要可以更安全
03/13 00:35, 42F

03/13 00:38, 1年前 , 43F
至於自己寫的可以寫的更絕一點
03/13 00:38, 43F

03/13 12:36, 1年前 , 44F
直覺要透過前端做就是會被browser擋
03/13 12:36, 44F

03/13 12:52, 1年前 , 45F
@superpandal 想請問大大有實際範例可以參考嗎?
03/13 12:52, 45F

03/13 13:34, 1年前 , 46F
原po能提供你的iframe 格式嗎?
03/13 13:34, 46F

03/13 17:23, 1年前 , 47F
在公司弄的 現在也沒空 在研究其它的
03/13 17:23, 47F

03/13 17:31, 1年前 , 48F
你多看mdn 再實作一下不就懂了...
03/13 17:31, 48F

03/13 18:53, 1年前 , 49F
這張圖可以嗎?
03/13 18:53, 49F

03/13 21:54, 1年前 , 50F
src="about:blank" 的話,找看看是不是有某段 JS 生出來的
03/13 21:54, 50F

03/13 21:55, 1年前 , 51F
還是 server-side 本身就故意要這樣塞,前者的話可以直接
03/13 21:55, 51F

03/13 21:55, 1年前 , 52F
找到資源網址吧
03/13 21:55, 52F

03/13 22:03, 1年前 , 53F
某s就是在嘴砲而已,他平常回文就那樣,不用理他
03/13 22:03, 53F

03/13 22:18, 1年前 , 54F
回 @Hsins,這目前對我來說是 undecidable 問題哈哈
03/13 22:18, 54F

03/14 01:44, 1年前 , 55F
而且是有兩個 iframe 的 src 都是 about:blank,但
03/14 01:44, 55F

03/14 01:44, 1年前 , 56F
我只要其中一個,這樣也行嗎?
03/14 01:44, 56F

03/14 19:21, 1年前 , 57F
我猜你的iframe 內容是其他js塞的 看一下network 的req
03/14 19:21, 57F

03/14 19:21, 1年前 , 58F
uest 有沒有你要的關鍵字
03/14 19:21, 58F

03/14 23:59, 1年前 , 59F
我好像找到解法了!!!大致上是去篩 server 送來的
03/14 23:59, 59F

03/14 23:59, 1年前 , 60F
response body 裡面出現的影片 url,詳細解法等我
03/14 23:59, 60F

03/14 23:59, 1年前 , 61F
實作完之後再上來告訴大家!獎金的發放也是。
03/14 23:59, 61F

03/15 00:05, 1年前 , 62F
期待解法
03/15 00:05, 62F
文章代碼(AID): #1a3NGX2f (Soft_Job)
文章代碼(AID): #1a3NGX2f (Soft_Job)