使用chrome扩展程序在后台自动条件浏览

时间:2012-07-04 23:57:29

标签: javascript google-chrome google-chrome-extension

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

我对javascript的能力不是问题 - 但是我很难辨别chrome扩展是否可以在后面加载注入脚本中的页面(使DOM可访问)

如果有人能够证实(或否认)这样做的能力,我会很高兴 - 如果有的话,我会在下一步研究的地方提供一些有用的指示。

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

background.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上的铬源代码,揭示了从背景创建offscreenTab的限制:

  

请注意,您无法从后台页面创建屏幕外标签   没有关联的WebContents。屏幕外标签的生命周期是有效的   到他们的创建标签,因此需要可见标签,因为父母有助于防止   屏外标签泄漏。

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

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

1 个答案:

答案 0 :(得分:1)

一些澄清:

  • 除了扩展程序的背景页面(使用iframe)之外没有“背景”标签,但在iframe中加载的页面可以知道它们正在加载到框架中,即使是最好的反框架破解程序脚本也可以打破或破坏
  • offscreenTab仍然是实验性的,非常明显,因为它的预期用途与你需要的不同
  • 内容脚本,chrome.tabs.update()是处理自动导航部分的唯一方法;除了对程序非常苛刻,问题和限制很多,包括CSP(内容 - 安全 - 策略),它们孤立的上下文隔离事件数据等。

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

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