防止在Safari上加载第三方元素的方法?

时间:2011-06-20 08:43:06

标签: macos safari safari-extension

基本上,我正在为Safari寻找RequestPolicy。 GlimmerBlocker,Privoxy和BFilter等,这些都运行良好,但没有一个支持“阻止第三方元素”功能。

我使用GlimmerBlocker,并且模仿(勉强)这个函数,我主要把这段代码用来过滤脚本泛滥的网站。

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

但是我厌倦了为每个网站重复创建过滤器。反之亦然,白名单将是相同的。 如果有人有想法解决这个问题,那就太棒了。感谢。

1 个答案:

答案 0 :(得分:5)

我做了这个概念验证Safari扩展来阻止外部资源(图像,对象和脚本,但不是链接元素,例如样式表链接),直到被允许。它具有最少的功能,但如果您感兴趣,我可能会进一步开发它。

我说“外部”而非“第三方”,因为我不知道是否可靠地判断资源是否为第三方。此扩展仅阻止来自与网页不同的主机的所有资源。因此,默认情况下它会阻止太多资源。

您可以右键单击被阻止的图像,然后使用上下文菜单命令将图像主机列入白名单。如果被阻止的图像没有指定的宽度和高度,则它将不可见,因此您无法右键单击它。 (为了解决这个问题,我需要添加代码以使空图像显示为方框。)

白名单命令不会显示已阻止的插件对象(例如Flash对象)或脚本。我将不得不添加代码来处理它。

您还可以将当前网站本身列入白名单,这意味着该网站上将允许所有外部资源。同样,这是通过上下文菜单命令完成的。

到目前为止,无法从白名单中删除项目。这可以添加。

Download the extension from here

您可以使用以下命令从扩展程序包中提取源文件:

xar -xf PartyPooper.safariextz

欢迎您使用来源做任何您喜欢的事。