2011-06-20 17 views
1

基本上,我正在爲Safari尋找RequestPolicy。 GlimmerBlocker,Privoxy和BFilter等,這些工作很好,但沒有一個支持「阻止第三方元素」功能。一種防止第三方元素在Safari上加載的方法?

我使用GlimmerBlocker,並且模仿(勉強)的功能,我主要把這個代碼過濾腳本充斥的網站。

replace(/<(script|noscript|iframe)([\s\S]*?)<\/(script|noscript|iframe)>/img, "") 

但是我厭倦了爲每個網站重複創建過濾器。反之亦然,白名單將是相同的。 如果有人有想法解決這個問題,那會非常好。謝謝。

回答

5

我做了這個概念驗證Safari擴展,以阻止外部資源(圖像,對象和腳本,但不是鏈接元素,如樣式錶鏈接),直到允許。它只有最少數量的功能,但如果您有興趣,我可能會進一步開發它。

我說「外部」而不是「第三方」,因爲我不知道是否可靠地告訴資源是否是第三方。該擴展只是阻止來自不同主機的所有資源,而不是網頁。因此,默認情況下它會阻止太多資源。

您可以右鍵單擊被阻止的圖像並使用上下文菜單命令將圖像主機列入白名單。如果被阻止的圖像沒有指定的寬度和高度,它將不可見,因此您將無法右鍵單擊它。 (爲了解決這個問題,我需要添加代碼來使空的圖像可以看作一個盒子。)

白名單命令不會顯示阻止的插件對象(如Flash對象)或腳本。我將不得不添加代碼來處理這個問題。

您也可以將當前網站本身列入白名單,這意味着該網站將允許所有外部資源。再次,這是通過上下文菜單命令完成的。

迄今爲止,無法從任一白名單中刪除項目。這可以添加。

Download the extension from here

您可以提取擴展包中使用此命令的源文件:

xar -xf PartyPooper.safariextz 

歡迎您做任何你與源喜歡。

+1

這真棒,非常感謝您的工作。 看起來它不會阻止外部資源被下載,但它從本地顯示,我是嗎? (順便說一句,我很抱歉,我沒有足夠的聲望投票你的答案) – provdr

+1

你知道,我不確定這一點。根據Apple的文檔,當我的擴展使用該技術阻止資源時,它是「未加載」的。但我不知道這是否意味着它不是_downloaded_。我將嘗試使用Safari的開發人員工具來檢查。 – canisbos

+0

我明白了。我也會環顧四周,如果蘋果允許這樣做並且可以實施,我將沒有理由不再使用Chromium或Firefox了,這真是太棒了。 – provdr