标签: browser-extension

如何开始开发Internet Explorer扩展?

这里有没有人有开发可以分享知识的IE扩展的经验?这将包括代码示例,或指向良好代码的链接,或流程文档或任何内容.

我真的很想这样做,但我正在用糟糕的文档,糟糕的代码/示例代码/缺乏它来打造巨大的墙.您可以提供的任何帮助/资源将不胜感激.

具体来说,我想从如何从IE扩展中访问/操作DOM开始.

编辑,更多细节:

理想情况下,我想种植一个工具栏按钮,当单击该按钮时,会弹出一个菜单,其中包含指向外部站点的链接.我还想根据某些条件访问DOM并在页面上植入JavaScript.

在IE扩展中保留信息的最佳方法是什么?在Firefox/Chrome /大多数现代浏览器中,您使用window.localStorage,但显然使用IE8/IE7,这不是一个选项.也许是SQLite DB等?可以假设.NET 4.0将安装在用户的计算机上吗?

我不想使用Spice IE,因为我想构建一个与IE9兼容的.我也在这个问题上添加了C++标签,因为如果用C++构建一个更好,我可以做到.

c# c++ internet-explorer atl browser-extension

204
推荐指数
4
解决办法
8万
查看次数

如何在Firefox中查看/删除本地存储?

在谷歌浏览器中,有一种简单的方法可以查看本地存储中的内容,以及在检查后修改或删除它.

在Firefox中是否有工具或其他相同的功能?

firefox firefox-addon browser-extension local-storage

184
推荐指数
6
解决办法
18万
查看次数

升级或安装后重新注入Chrome扩展程序内容脚本

安装或升级我正在处理的Chrome扩展程序后,不会重新注入内容脚本(在清单中指定),因此需要页面刷新才能使扩展能够正常工作.有没有办法强制脚本再次注入?

我相信我可以通过从清单中删除它们然后处理在后台页面中注入哪些页面来以编程方式再次注入它们,但这不是一个好的解决方案.

我不想自动刷新用户的标签,因为这可能会丢失一些数据.安装或升级扩展时,Safari会自动刷新所有页面.

browser-extension google-chrome-extension content-script

48
推荐指数
3
解决办法
9476
查看次数

如何在浏览器JS控制台中包含脚本时覆盖内容安全策略?

我试图通过这种方式使用控制台在现有网站上包含JQuery:

var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery-1.11.1.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)

然后我收到了这个错误:

Content Security Policy: The page's settings blocked the loading of a resource at http://code.jquery.com/jquery-1.11.1.min.js ..
Run Code Online (Sandbox Code Playgroud)

在开发过程中,我可能想要包含外部Javascript.我可能不想复制粘贴整个JQuery代码,因为它看起来不整洁.如何为开发目的覆盖内容安全策略?

这对快速测试非常有用.我可能想稍后将我正在编写的脚本转换为浏览器扩展.

注意(更新):我在现有网站上编写脚本,无法控制设置Content-Security-Policy标头.

javascript browser-security browser-extension content-security-policy

47
推荐指数
1
解决办法
5万
查看次数

Firefox 上的 Manifest v3 后台脚本/服务工作者

我正在尝试将我的浏览器扩展(我希望在 Chrome 和 Firefox 上运行)从清单 v2 迁移到 v3。

\n

但是,我收到有关该background部分的相互矛盾的信息。我对谷歌和堆栈溢出做了很多研究,但似乎没有人在任何事情上达成一致。此外,大多数信息似乎已经过时。在我找到的最好的来源中,很多地方都提到它应该迁移到service_workerexample),但 Firefox 似乎仍然应该使用scriptssource)。

\n

但无论我做什么,我都会遇到错误。如果我只使用 Service Worker:

\n
"background": {\n    "type": "module", // tried both with and without this option\n    "service_worker": "background.ts"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

来自的构建命令parcel很高兴(似乎在下面使用parcel/transformer-webextension),但web-ext灾难性地失败了:

\n
WebExtError: installTemporaryAddon: Error:\nError: Could not install add-on at \'...\':\nError: background.service_worker is currently disabled\n
Run Code Online (Sandbox Code Playgroud)\n

即使我提供了--firefox-preview应该解决此问题的标志。

\n

这有点有道理,这篇写得很好的教程声称 Firefox 继续使用scriptsV3,只是弃用了该persisent标志(您可以删除该标志或将其设置为 false)。没关系,因为无论如何我都没有使用它。

\n
"background": …
Run Code Online (Sandbox Code Playgroud)

firefox google-chrome cross-browser browser-extension service-worker

34
推荐指数
2
解决办法
1万
查看次数

测试浏览器扩展

我要写一堆浏览器扩展(每个流行的浏览器都有相同的功能).我希望,一些代码将被共享,但我还不确定.当然,一些扩展将使用本机API.我对TDD/BDD没有多少经验,我认为现在是开始从这个项目中获取这些想法的好时机.

问题是,我不知道如何处理它.我应该为每个浏览器编写不同的测试吗?我应该走多远这些测试?这些扩展将非常简单 - 本地存储中的一些数据,刷新页面和通过Web套接字进行监听.

我的观察为什么对我来说很难 - 因为有很多行为,而不是那么多模型,它们也依赖于平台.

javascript testing tdd bdd browser-extension

29
推荐指数
1
解决办法
6659
查看次数

如何在Internet Explorer上运行现代用户脚本?

我发现使用Greasemonkey类型的用户并将其转换为Chrome,Safari和Firefox的扩展/插件非常容易.当然,人们可以在Chrome中原生运行它们,只需在Firefox中使用Greasemonkey插件即可.

我现在正在探索是否可以在IE上运行我的用户脚本.我尝试了古老的Trixie和膨胀的ie7pro,但都没有正确运行脚本.它们部分工作,但也似乎在同一页面上多次重新加载脚本,不断插入应该只显示一次的项目.经常提到的Greasemonkey for IE现在已经不存在了,它的域名(gm4ie.com)已经停放并且充满了广告.

我挖了一下w/search,寻找有关如何开发IE扩展的信息(例如这个).但我没有找到任何人谈论让用户脚本在插件内运行.至少看起来javascript可能在那些环境中不可用,需要在C#中完全重写.

我上面没有列出任何Greasemonkey型插件吗?是否可以将javascript用户脚本转换为IE扩展?

internet-explorer cross-browser userscripts browser-extension

24
推荐指数
1
解决办法
1万
查看次数

Chrome扩展程序中的多个JS文件 - 如何加载它们?

我写了一个Chrome扩展程序.我的background.js文件非常大,所以我想将它拆分为较小的部分并在需要时加载指定的方法(某种延迟加载).

我用Firefox完成了这个:

// ( call for load specified lib )
var libPath = redExt.basePath + 'content/redExt/lib/' + redExt.browser + '/' + libName + '.js';
var service = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
service.loadSubScript("chrome://" + libPath);
// ( executing loaded file )
Run Code Online (Sandbox Code Playgroud)

是否有可能在基于Webkit的浏览器中以类似的方式执行此操作?我找到了如何将多个JS文件注入匹配页面(使用manifest.json)的解决方案,但找不到包含JS文件的方法只是为了扩展.

javascript google-chrome browser-extension google-chrome-extension

23
推荐指数
3
解决办法
2万
查看次数

在Javascript中保护OAuth

我有一个api,它使用OAuth 1.0a来验证使用它的应用程序.它正在取代一个旧的api,它使用了一些被弃用的定制和hodge-podge调用.

众所周知,OAuth 1.0a在(客户端)Javascript中并不安全,因为它依赖于保密的消费者秘密.这是不可能的,因为源始终是可见的.

我们为Chrome,Firefox,IE和Safari提供了浏览器扩展,将来需要使用此API.这些扩展都是大部分或完全用Javascript编写的,因此也存在安全性问题.

这些扩展是内部的,因此可以使用自定义身份验证方法来获取其访问令牌.

我计划实施的内容如下:

  • 用户在浏览器中登录网站.
  • 该网站向他们发放带有会话密钥的cookie.
  • 我们的扩展然后获取该cookie并将其传递给api.
  • api验证它是一个有效的活动会话并发布其访问权限的扩展.
  • 这些令牌在到期前最多持续一小时.
  • javascript发布的cookie也会有较低的费率限制.

它在以下假设下运作:

  • 如果另一个应用程序可以访问您的cookie,那么无论如何他们都可以在网站上冒充您,因此访问api也不例外.
  • 所有身份验证方法仍然通过我们的控制.
  • 令牌的定期到期意味着如果它们被泄露,那么剥削的时间有限.

我的问题是,这是一种限制访问api的安全方法吗?还有更好的吗?

几个笔记. 我知道有一个事实,Chrome扩展可以请求访问您的给定网站的cookie的权限.我相信firefox扩展也可以这样做.

显然,我们不希望我们的cookie可以通过任何页面上的javascript访问,否则我们会暴露自己的XSS攻击,因此它们只需要通过扩展来访问.

javascript security oauth browser-extension oauth-provider

20
推荐指数
1
解决办法
9645
查看次数

扩展和书签的内容安全策略

Github具有以下内容安全策略:

Content-Security-Policy:default-src*; script-src assets-cdn.github.com www.google-analytics.com collector-cdn.github.com; object-src assets-cdn.github.com; style-src'self''unsafe-inline''unsafe-eval'res assets-cdn.github.com; img-src'self'数据:assets-cdn.github.com identicons.github.com www.google-analytics.com collector.githubapp.com*.githubusercontent.com*.gravatar.com*.wp.com; media-src'un'; frame-src'self'render.githubusercontent.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src assets-cdn.github.com; connect-src'self'ghconduit.com:25035 live.github.com uploads.github.com s3.amazonaws.com

我们可以使用Evernote或Pocket等服务的浏览器扩展来剪辑/检索网页内容.

在这个Github政策中,我没有看到Pocket或Evernote的任何引用.有人可以解释为什么Pocket扩展能够从Github检索内容,而Evernote扩展不是,有CSP错误)

CSP策略是否可以阻止加载bookmarklet应用程序或浏览器扩展应用程序(如剪辑器)?如果是这样,Pocket如何能够在任何内容上进行扩展工作?

我们的bookmarklets /扩展中有这个问题,我希望它们像Pocket扩展一样顺畅,但我真的不知道从哪里开始...谢谢


编辑:由于人们在评论中要求代码,我们的书签加载了这个javascript:

javascript: (function() {
    function loadScript(a, b) {
        var c = document.createElement('script');
        c.type = 'text/javascript';
        c.src = a;
        var d = document.getElementsByTagName('head')[0],
            done = false;
        c.onload = c.onreadystatechange = function() {
            if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
                done …
Run Code Online (Sandbox Code Playgroud)

security bookmarklet browser-extension google-chrome-extension content-security-policy

18
推荐指数
1
解决办法
4168
查看次数