0

我正在研究是否可以使用 Chrome 扩展程序来自动浏览和导航(有条件地)。我希望扩展程序可以加载远程页面(在后台)并注入 javascript 来评估可点击链接并点击(通过调用 click 方法)适当的(由一些 javascript 逻辑评估)链接,然后对结果重复过程页。

我的 javascript 能力不是问题 - 但我正在努力辨别(或不) chrome 扩展是否可以在后面加载页面并将脚本注入其中(使 DOM 可访问)。

如果有人能证实(或否认)这样做的能力,我会很高兴——如果是这样,我会在接下来的研究方向上提供一些有用的指示。

@Rob W - 实验功能似乎完全符合要求。但我的第一次测试似乎表明这些功能仍然非常实验性......即。回调没有返回任何对象:

背景.html

function getAllosTabs(osTabs){
 var x = osTabs;
 alert(x.length); // error: osTabs is undefined
}

function createOffScreenTabCallback(offscreenTab){
 document.write("offscreen tab created");
 chrome.experimental.offscreenTabs.getAll(getAllosTabs);
 alert(offscreenTab); // error: offscreenTab is undefined
}

var ostab = chrome.experimental.offscreenTabs.create({"url":"http://www.google.com"}, createOffScreenTabCallback)
alert(ostab); // error: ostab is undefined

对 github 上的 chromium 源代码的进一步挖掘揭示了从后台创建 offscreenTab 的限制:

请注意,您不能从背景页面创建屏幕外选项卡,因为它们没有关联的 WebContents。屏幕外标签的生命周期与其创建标签相关联,因此需要可见标签作为父标签有助于防止屏幕外标签泄漏。

到目前为止,我似乎不太可能创建一个在后台(自动和有条件地)浏览的扩展,但我仍然会继续尝试——也许从弹出窗口中的脚本创建它可能会起作用。它不会在计算机启动时自动运行,但会在浏览器打开并且用户单击浏览器操作时运行。

任何进一步的建议都非常受欢迎。

4

1 回答 1

1

一些澄清:

  • 除了扩展程序的背景页面(带有 iframe)之外,没有“背景”选项卡,但是在 iframe 中加载的页面可以知道它们是在框架中加载的,并且即使是最好的反框架破坏器脚本也可能会中断或中断
  • offscreenTab 仍然是实验性的并且非常明显,因为它的预期用途与您需要的不同
  • 内容脚本,并且chrome.tabs.update()是处理自动导航部分的唯一方法;除了对程序极其苛刻之外,问题和限制也很多,包括 CSP(Content-Security-Policy),它们隔离的上下文隔离事件数据等。

替代品……真的不多。问题是你正在使用用户的计算机和浏览器来做你的事情,不管它们有多脏,chrome 的开发团队仍然不会喜欢它,并且会在你和你的扩展程序上做很多事情(比如 v2 清单) .

您可以使用 NPAPI 启动另一个实例chrome.exe --load-extension=iMacros.

于 2012-07-09T01:41:34.950 回答