danny0838 / webscrapbook

A browser extension that captures web pages to local device or backend server for future retrieval, organization, annotation, and edit. This project inherits from legacy Firefox add-on ScrapBook X.
Mozilla Public License 2.0
850 stars 118 forks source link

PTT網頁版imgur的圖片儲存失敗 #369

Closed DCGoner closed 5 months ago

DCGoner commented 5 months ago

測試網址:https://www.ptt.cc/bbs/Beauty/M.1706486628.A.E2B.html 使用腳本:https://greasyfork.org/zh-TW/scripts/28264-ptt-imgur-fix

忘記從哪個版本開始,火狐如果有使用 PTT Imgur Fix腳本,網頁剪貼簿就無法儲存 PTT網頁版中 imgur的圖片(我都存htz檔) 只有擷取分頁(原貌),才能儲存成功,但圖片大小會和有腳本的狀況不一樣 後來看到把 privacy.partition.network_state 改成 false,就能在使用腳本時,正常儲存 參數改動在這邊看到的:https://www.firefox.net.cn/read.php?tid=54210&fid=4&page=22#read_370165

不過,火狐從這個版本開始:https://ftp.mozilla.org/pub/firefox/nightly/2024/01/2024-01-16-16-37-21-mozilla-central-l10n/ 即使把 privacy.partition.network_state 改成 false,也無法儲存 PTT網頁版中 imgur的圖片。只有使用擷取分頁(原貌), 或停用 PTT Imgur Fix腳本,才能儲存成功,但圖片、檔案大小會不一樣(有開新profiles測試過,只裝網頁剪貼簿和腳本)

剛剛發現,如果使用火狐內建的儲存(Ctrl+S):網頁,完整封裝(一個htm檔和一個資料夾) 可以正常儲存,並保留腳本使用效果(但沒htz檔那麼完整),圖片也是原圖, 甚至把 privacy.partition.network_state 改回 true,也能正常儲存!! 不曉得火狐又改了或新增什麼參數,才導致這種情形, 還是說網頁剪貼簿有其它設定可改善這個狀況?

系統資訊: Win10 Pro 64bit Firefox Nightly 123.0a1(2024-01-16)(64 位元):這是最後一個只改 privacy.partition.network_state 就沒問題的版本 https://ftp.mozilla.org/pub/firefox/nightly/2024/01/2024-01-16-05-03-21-mozilla-central-l10n/

danny0838 commented 5 months ago

這是因為 imgur 似乎有封鎖 referrer 來自 PTT 的網路請求,imgur 轉出的圖片會加上 referrerpolicy="no-referrer" 屬性防止送出 referrer,不過目前 WebScrapBook 還不支援此屬性,因此送出了 PTT 的 referrer 而導致被擋。

要完整支援這個屬性要改一大堆程式碼,要有空才能處理XD

暫時的處理方式是擷取分頁為 > 進階設定,把 "capture.referrerPolicy" 後面的值改成 "no-referrer"`,這樣就會使所有擷取的網路請求都不送出 referrer。

不過,因為 PTT Imgur Fix 腳本會自動隱藏螢幕可視範圍外的圖片,所以即使做了這些設定,也只能擷取到一兩張。

至於擷取原貌,其實就是擷取未執行腳本的頁面,和沒安裝 PTT Imgur Fix 是一樣的。

DCGoner commented 5 months ago

原來如此,新的Nightly火狐測試,改成no-referrer,就能成功儲存了。 不過有點麻煩,還是先龜在舊的Nightly版,感謝解惑。

剛剛發現擴充套件有更新, 去下載了最新的Nightly火狐,不用改no-referrer,就能成功儲存了!

danny0838 commented 5 months ago

2.6.0 應該已經修正 referrer policy 的問題,還有問題再回報。