Chrome 扩展:阻止来自外部域的内容被加载到特定域的页面中

     2023-05-07     59

关键词:

【中文标题】Chrome 扩展:阻止来自外部域的内容被加载到特定域的页面中【英文标题】:Chrome Extension: Blocking content from external domain being loaded into pages from specific domain 【发布时间】:2014-03-04 21:05:15 【问题描述】:

我正在构建一个在我无法控制的社交网站上使用的扩展程序。该网站允许用户插入来自其他域的内容(图像、flash 等)。我想阻止这个。

我最初认为触发 jquery document.ready 并在那时从 html 中删除内容会很好,因为 document ready 在加载 dom 但内容尚未加载时触发。我只是清空必要的 div 元素,希望这会阻止 http 请求的发生。不幸的是,这种技术不起作用。

然后我发现 chrome.webRequest 似乎可行。我遇到的困难是仅针对我所在的域进行扩展。 Chrome.webRequest 只能用于后台页面,不能用于内容脚本。

我最初的清单权限看起来像这样:

 "permissions": [
    "tabs",
    "http://www.example.com/*",
  ],

但后来我使用 chrome.webRequest.onBeforeRequest.addListener 记录了请求,我注意到只记录了扩展程序所针对的站点的图像请求。所以我将权限更改为:

"permissions": [
    "tabs",
    "<all_urls>",
    "webRequest",
    "webRequestBlocking"
  ],

我现在可以使用 chrome.webRequest.onBeforeRequest.addListener 查看所有请求。但是,因为此事件是在后台页面中触发的,所以它会针对我在浏览器中访问的所有域和域触发。当我阻止加载图像时,它会阻止所有站点上的所有图像加载。

问题是 chrome.webRequest.onBeforeRequest.addListener 返回的对象不包含用户当前所在选项卡的 url。只言片语。请求中没有任何内容可以看出我可以检测到当前选项卡所在的域。我显然可以使用 chrome.tabs.query 获取带有标签 ID 的 tab.url,但这与 onBeforeRequest 监听器事件一样是异步的。

这是目前的事件监听代码:

chrome.webRequest.onBeforeSendHeaders.addListener(

    function(details) 

    if(details.type == "image" && (details.url.indexOf("://www.example.com") == -1))
    console.log(details.url);       
            //THIS LOGS ALL IMAGES LOADING EXCEPT THE SITE THE EXTENSION IS FOR 
            //BUT THE CANCEL ALSO CANCELS IMAGES LOADING ON ALL OTHER SITES.
            return cancel: true;
    

    ,
    urls: ["<all_urls>"],
    ["blocking"]); 

简而言之,当正在加载的图像(可以是来自任何地方的图像)被加载到扩展程序所针对的站点时,我如何只运行取消代码?

最后(如果我可以让它工作的话)Firefox 是否有与 chrome.webrequest 类似的选项,因为我想构建一个等效的 Firefox 插件。

【问题讨论】:

我没有给出深入的解决方案,所以我只是发表评论 - 本文中看到的 nsIContentPolicy HERE 谢谢。但该链接指向 Bing 搜索而不是网页 Noitidart。 nslContentPolicy 也是 firefox 的东西还是 chrome 的东西或两者兼而有之?看看我能找到什么。 糟糕,这是MDN - nsiContentPolicty上的文章 【参考方案1】:

你去吧,解决方案已经存在,所以不要接受这个作为解决方案,但我在这里发布,所以它很好,很重要,让所有人都能看到:

An example of nsIContentPolicy for firefox addon?

【讨论】:

“CORS 策略已阻止访问获取”Chrome 扩展程序错误

】“CORS策略已阻止访问获取”Chrome扩展程序错误【英文标题】:\'AccesstofetchhasbeenblockedbyCORSpolicy\'Chromeextensionerror【发布时间】:2021-02-2006:10:58【问题描述】:我正在尝试从我的Chrome扩展程序的后台脚本中的外部API获取数据,使... 查看详情

堆栈溢出所需的外部 JavaScript 问题 [关闭]

...消息“StackOverflow需要来自另一个域的外部JavaScript,它被阻止或无法加载”并且无法在***中发表评论(以及更多内容)。互联网上有很多修复。有时太多的建议会隐藏搜索者的正确答 查看详情

Contents.js 阻止页面加载 chrome 扩展

】Contents.js阻止页面加载chrome扩展【英文标题】:Contents.jsblockingpageloadchromeextension【发布时间】:2021-11-0103:45:28【问题描述】:大家好,我正在构建一个扩展,但我有一个运行时很重的函数,它会阻塞页面的负载,我想知道是否... 查看详情

idmchrome扩展被阻止解决办法(代码片段)

...GCExt这个文件夹扔进硬盘【随便哪里,能找到就好5、进入chrome设置——扩展程序——加载正在开发的应用程序6、在弹出的目录中找到IDMGCExt文件夹,加载7、完成 方法2:1.下载最新安装2.将IDMGCEXT.crx拖至扩展安装  查看详情

我的 AndroidManifest.xml 中是不是有任何内容阻止加载外部 JS 和 CSS?

】我的AndroidManifest.xml中是不是有任何内容阻止加载外部JS和CSS?【英文标题】:IsthereanythinginmyAndroidManifest.xmlpreventingexternalJSandCSSfromloading?我的AndroidManifest.xml中是否有任何内容阻止加载外部JS和CSS?【发布时间】:2018-06-0602:22:48... 查看详情

是否可以通过 Chrome 扩展内容脚本打开 Chrome 外部协议请求?

】是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求?【英文标题】:IsitpossibletoopenaChromeExternalProtocolRequestthroughaChromeExtentionContentScript?【发布时间】:2016-09-0904:16:02【问题描述】:我一直对如何使用外部协议请求感到困惑... 查看详情

来自原点的文本轨道已被阻止加载和 Heroku Django 应用程序

】来自原点的文本轨道已被阻止加载和HerokuDjango应用程序【英文标题】:TextTrackfromoriginhasbeenblockedfromloadingandHerokuDjangoApp【发布时间】:2015-03-1612:09:43【问题描述】:我正在使用AmazonCloudFront,并希望在其中托管我的captions.vtt文件... 查看详情

SwiftUI:如何将内容阻止程序应用于 chrome?

】SwiftUI:如何将内容阻止程序应用于chrome?【英文标题】:SwiftUI:Howtoapplycontentblockertochrome?【发布时间】:2021-04-1214:34:23【问题描述】:我目前正在使用内容阻止程序扩展程序,该程序对Safari非常有效。但是有没有人知道它是否... 查看详情

如何从 chrome 扩展中读取文件?

】如何从chrome扩展中读取文件?【英文标题】:Howtoreadfilefromchromeextension?【发布时间】:2015-05-0515:39:06【问题描述】:我有popup.html,其中popup.js在通过单击浏览器操作加载弹出窗口时被调用。我正在以编程方式使用chrome.tabs.execut... 查看详情

Chrome 扩展 - 在底层页面上覆盖来自 iframe 的内容

】Chrome扩展-在底层页面上覆盖来自iframe的内容【英文标题】:Chromeextension-overlaycontentfromiframeonunderlyingpage【发布时间】:2016-08-0118:19:59【问题描述】:我有一个chrome扩展程序,它在页面右侧显示一个菜单,由几个47像素宽的按钮... 查看详情

从 .html 文件中读取其内容的简单烧瓶应用程序。外部样式表被阻止?

...tml文件中读取其内容的简单烧瓶应用程序。外部样式表被阻止?【英文标题】:Simpleflaskapplicationthatreadsitscontentfroma.htmlfile.Externalstylesheetbeingblocked?【发布时间】:2012-05-0912:21:51【问题描述】:我制作了一个非常简单的烧瓶应用程... 查看详情

Chrome 扩展 - 在浏览器上加载 js 之前获取 Html DOM

】Chrome扩展-在浏览器上加载js之前获取HtmlDOM【英文标题】:Chromeextension-getHtmlDOMbeforeloadjsonbrowser【发布时间】:2015-08-2720:23:45【问题描述】:我正在开发一个chrome扩展,它需要阻止html页面的加载,对页面中的javascript进行一些验... 查看详情

Chrome 扩展:加载不同的内容脚本

】Chrome扩展:加载不同的内容脚本【英文标题】:Chromeextension:loaddifferentcontentscripts【发布时间】:2011-11-2516:14:01【问题描述】:我想根据当前选择的页面和选项卡加载不同的内容脚本。现在,我有三个内容脚本。我想将其中两... 查看详情

Chrome 扩展内容脚本在页面刷新之前未加载

】Chrome扩展内容脚本在页面刷新之前未加载【英文标题】:ChromeextensionContentScriptnotloadeduntilpageisrefreshed【发布时间】:2014-01-1821:01:11【问题描述】:我有一个Chrome扩展内容脚本,我想在Trello板上运行。目前,它仅包含:console.log(... 查看详情

在 iFrame 中激活 Zurb Foundation 的 Joyride,来自 Chrome 扩展内容脚本

】在iFrame中激活ZurbFoundation的Joyride,来自Chrome扩展内容脚本【英文标题】:ActivatingZurbFoundation\'sJoyrideinaniFrame,fromChromeExtensioncontentscript【发布时间】:2015-12-0301:18:26【问题描述】:我正在构建一个Chrome扩展程序,它在任何HTML页面... 查看详情

Safari 中的“不允许请求资源”和 Firefox 中的“阻止加载混合活动内容”。 Chrome 中的完美功能

...许请求资源”和Firefox中的“阻止加载混合活动内容”。Chrome中的完美功能【英文标题】:"Notallowedtorequestresource"inSafariand"Blockedloadingmixedactivecontent"inFirefox.PerfectfunctionalityinChrome【发布时间】:2019-09-2812:18:27【问题 查看详情

video.js 字幕无法加载

...1【问题描述】:我刚刚下载了开源视频播放器Video.js,在Chrome和IE中打开了演示,两个字幕都无法播放。源文件:http://www.videojs.com/我没有更改任何内容,这是我在Chrome中读取控制台时遇到的错误:来自\'file://\'的文本轨道已被阻... 查看详情

Chrome 扩展将 jquery 注入 iframe

】Chrome扩展将jquery注入iframe【英文标题】:Chromeextensioninjectjqueryintoiframe【发布时间】:2016-10-0911:54:20【问题描述】:我正在尝试将jquery插入位于我的内容脚本中的iframe。问题是jqueryui确实被加载但只返回一条消息“未定义Jquery”... 查看详情